1

ここの初心者、私は XNA を使用して Flappy Bird クローンを作成しています。これまで、解決できない問題に遭遇したことはありませんが、パイプのスポーンを続行する方法がわかりません。

私はパイプ クラスを持っており、メインのゲーム更新関数のタイマーに基づいてそのインスタンスを作成することができました (パイプが 1 回だけ作成されることはわかっています)。

elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;

if (elapsedTime == 1.0f)
{
    Pipe pipe = new Pipe();
}

問題は、「パイプ」がまだ作成されていないため、メインのゲーム アップデートで pipe.Update() 関数を呼び出せないことです。いずれにせよ、Pipe.cs の複数のインスタンスを生成する場合、それぞれの Update() 関数をどのように参照すればよいでしょうか?

4

1 に答える 1

1

複数の を作成するpipesには、リストと単純なforループを使用できます (spawntimeパイプを 5 秒ごとに生成する要素を追加して、どのように生成するかを理解してもらいました)。

List<Pipe> pipes = new List<Pipe>();
int spawnfactor = 5;
int spawns = 0; //or 1, if you want the first spawn to occur at 1 second

protected override void Update()
{
    elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;

    if (elapsedTime == spawnfactor * spawns)
    {
        pipes.Add(New Pipe());
        spawns++; //keep track of how many spawns we've had
    }

    for (int i = 0; i < pipes.Count; i++)
    {
        pipes[i].Update();//update each pipe in the list.
    }
}

protected override void Draw()
{
    for (int i = 0; i < pipes.Count; i++)
    {
        pipes[i].Draw();
    }
}

これが役立つかどうか、または不明な点がある場合はお知らせください。

于 2014-03-04T02:05:56.650 に答える