0

ゲームを作成していて、衝突が発生するたびに爆発アニメーションを実行したいと考えています。ただし、アニメーション化する方法を知っているアプローチは、キーボード入力に基づいています。呼び出されたときにアニメーションがすべてのフレームを 1 回通過してから停止するようにメソッドをコーディングする最良の方法は何ですか?

public void Update(GameTime gametime)
  {
    timer += gametime.ElapsedGameTime.Milliseconds;
       if (timer >= msBetweenFrames)
      {
        timer = 0;
        if (CurrentFrame++ == numberOfFrames - 1)
           CurrentFrame = 0;
          rect.X = CurrentFrame * width;
          rect.Y = 0;
     }
  }

   public void Render(SpriteBatch sb, Vector2 position, Color color)
  {
   sb.Draw(aniTex, position, rect, color, 0, Vector2.Zero, 2.0f, SpriteEffects.None, 0);
 }
4

2 に答える 2

1

たとえば、アニメーションが終了したら、アニメーションを含むオブジェクトをゲームから削除することで、アニメーションを停止できます。

またはcurrentFrame、アニメーションが終了したときに を不正な値 (たとえば -1) に設定して、それをテストすることもできます。

public void Update(GameTime gametime)
{
    if (currentFrame >= 0)
    {
        timer += gametime.ElapsedGameTime.Milliseconds;
        if (timer >= msBetweenFrames)
        {
            timer = 0;
            currentFrame++;
            if (currentFramr >= numberOfFrames - 1)
                currentFrame = -1;
            rect.X = CurrentFrame * width;
            rect.Y = 0;
        }
    }
}

public void Render(SpriteBatch sb, Vector2 position, Color color)
{
    if (currentFrame >= 0)
        sb.Draw(aniTex, position, rect, color, 0, Vector2.Zero, 2.0f, SpriteEffects.None, 0);
}
于 2013-03-30T23:32:59.987 に答える