アニメーションを逆再生させることでドワーフを立ち上がらたいと思います。しかし、AnimationEnded イベントを使用できません。なぜならアニメーションが終了するか開始されるときにだけ実行されるからです

○「かがみ中」のときに「Spaceキー」が押された場合、逆再生し立ち上がらせ始めます。SpeedFactor を 0 に設定し、自動アニメーションを無効にし、「立ち上がり」状態に変更します。
  1. // Add this to the if (state == "stayCrouched") block in the UpdateState method
  2. if (keyState.IsKeyDown(Keys.Space))
  3. {
  4. crouch.ElapsedTime = crouch.AnimationSource.Duration;
  5. crouch.SpeedFactor = 0;
  6. state = "standUp";
  7. }
  8.  
○「立ち上がり」状態を作成する必要があります。アニメーションの経過時間から更新時間を引いた値が負の数であれば、移行を終了し「立ち」状態に戻ります。もしくはアニメーションの経過時間からゲームの経過時間を引きます。
これは少し注意深くソースコードを記述する必要があります。
  1. // Add this to the UpdateState method
  2. else if (state == "standUp")
  3. {
  4. if (crouch.ElapsedTime - gameTime.ElapsedGameTime.Ticks <= 0)
  5. {
  6. crouch.SpeedFactor = 1;
  7. crouch.ElapsedTime = 0;
  8. idle.ElapsedTime = 0;
  9. state = "idle";
  10. }
  11. else
  12. crouch.ElapsedTime -= gameTime.ElapsedGameTime.Ticks;
  13. RunController(dwarfAnimator, crouch);
  14. }
  15.  

最終更新:2009年06月21日 12:50