1

新手,我正在使用 XNA 创建 Flappy Bird 克隆,到目前为止,我还没有遇到任何无法解决的问题,但我只是不知道如何继续生成管道。

我有一个管道类,我设法根据主游戏更新功能中的计时器创建它的一个实例(我知道这只会创建一次管道):

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 回答