0

我正在尝试学习 XNA 游戏编程,并按照John Sonmez在 Pluralsight(一个 Pong 游戏克隆)上的教程进行操作。这是检测是否按下左/右键的代码,以便我们可以移动桨:

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状态似乎永远不会清除。也就是说,如果我按下左键或右键,即使只是快速敲击一次,那么桨叶就会一直移动,就像我按住键一样。我没有按住钥匙。我还刚刚“干净”地加载了这台 PC,所以几乎只有 Windows(它是 Windows 8,如果有区别的话)和 Visual Studio 和 Monogame 安装。所以没有竞争的钥匙处理程序或类似的东西。

有任何想法吗?

4

2 回答 2

3

你忘记了 else,这使它为 0。
你现在所做的是将速度设置为 0.5,每次它下降,但永远不要把它改回来。

于 2013-09-19T09:08:15.890 回答
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 回答