0

私は XNA ゲーム プログラミングを学ぼうとしており、Pluralsight (Pong ゲームのクローン) に関するJohn Sonmezのチュートリアルに従っています。パドルを動かすことができるように左右のキーが押されているかどうかを検出するコードは次のとおりです。

public override void Update(GameTime gameTime)
{
    if (Keyboard.GetState().IsKeyDown(Keys.Left))
        Velocity = new Vector2(0, -0.5f);

    if (Keyboard.GetState().IsKeyDown(Keys.Right))
        Velocity = new Vector2(0, 0.5f);

    base.Update(gameTime);
}

このコードは機能しますが、Keyboard状態がクリアされないようです。つまり、左キーまたは右キーを押すと、1 回すばやくタップしただけでも、キーを押しているかのようにパドルが動き続けます。キーを押し下げていません。また、この PC を「クリーン」にロードしたので、ほとんど Windows (違いがある場合は Windows 8) と Visual Studio と Monogame がインストールされています。そのため、競合するキーハンドラーなどはありません。

何か案は?

4

2 に答える 2

1

次のようにする必要があります。

public override void Update(GameTime gameTime)
{
    Velocity = Vector2.Zero;

    if (Keyboard.GetState().IsKeyDown(Keys.Left))
        Velocity = new Vector2(0, -0.5f);

    if (Keyboard.GetState().IsKeyDown(Keys.Right))
        Velocity = new Vector2(0, 0.5f);

    base.Update(gameTime);
}

このようにしてVelocity、キーが押されていないときにベクトルをリセットします。

于 2013-09-19T14:58:18.000 に答える