1

私は XNA Game Studios の初心者で、ゲーム プログラミングの基礎を学びたいと思っています。私は現在、スペース インベーダーのバリエーションのような小さなスペース シューターを作成しています。

ロケットの見栄えを良くするために、煙の軌跡をいくつか作成しましたが、しばらくしてから (400 ミリ秒) 煙の軌跡を削除して、画面がその煙で遮られないようにします。これを実現するために、次のコードを作成しましたが、これはかなり論理的だと思われます。

for(int i=0; i < rocketPosition.Count; i++)
{
    rocketPosition[i] = new Vector2(rocketPosition[i].X, rocketPosition[i].Y - rocketSpeed);
    Vector2 smokePosition = rocketPosition[i];
    smokePosition.X += Rocket.Width / 2 + smokeTexture.Width / 2 + randomizer.Next(10) - 5;
    smokePosition.Y += Rocket.Height + randomizer.Next(10) - 5;
    smokeList.Add(new Particle(smokePosition, gameTime.TotalGameTime.Milliseconds));
    if (rocketPosition[i].Y < 0 - Rocket.Height)
    {
        rocketPosition.RemoveAt(i);
    }
}

for(int i = 0; i < smokeList.Count; i++)
{
    if (smokeList[i].Time < gameTime.TotalGameTime.Milliseconds - smokeDuration)
    {
        smokeList.RemoveAt(i);
    }
}

Particle は、リスト アイテム (煙のパーティクルを表す) の作成時間とその位置 Vector2 の両方を取得するために作成したクラスです。

ただし、煙の軌跡を下から上に削除する代わりに、途中で停止し、次の図のようになります。 間に穴のある煙の道

誰かが私のコードを手伝ってくれることを願っています。

4

1 に答える 1