0

XNA/C# を使用して Windows phone 用に作成したゲームがあり、プレーヤーを支援するために爆弾を追加することにしました。

これで、レベルごとに 1 つの爆弾しか使用できないように、タイマーと bool をセットアップしました。

しかし、ゲームが始まるやいなや、爆弾はすでにそこにあります!タイマーは作動していないと思います。

bool canDrawBomb = false;


public static Texture2D bomb;
GameTimer bombTimer = new GameTimer();

protected override void Initialize()
{

    // Bomb timer.
    bombTimer.UpdateInterval.Add(new TimeSpan(50000));
    bombTimer.Update += bombTimer_Update;
    bombTimer.Start();

    base.Initialize();
}

void bombTimer_Update(object sender, GameTimerEventArgs e)
{
    canDrawBomb = true;
    bombTimer.Stop();
}

protected override void LoadContent()
{

    bomb = Content.Load<Texture2D>("Bomb");
}

protected override void Draw(GameTime gameTime)
{

        if (canDrawBomb)
        {
            // Draw the bomb.
            // TESTED: OK. The bomb can draw but not at right time.
            spriteBatch.Draw(bomb, new Vector2(), Color.White);
        }
}

ここでの問題は、bombTimer を 50 秒に設定したにもかかわらず、ゲームの開始時に描画されることです!

どうすればこれを修正できますか? 私は何時間もこれにいましたが、それは私を狂わせています。何が間違っているのかわからない!

4

2 に答える 2

1

GameTimer.Start() が呼び出されるとすぐに GameTimer.Update イベントが発生すると思われます。カウンター変数を追加し、2 番目の呼び出しでのみcanDrawBombfalse に設定します (2 番目の呼び出しでのみタイマーを無効にします)。

または、XNA で利用可能な場合は DispatcherTimer を使用しStartます。

于 2013-06-25T18:21:53.317 に答える