我正在尝试学习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
状态似乎永远不会清楚。也就是说,如果我按下左或右键,即使只是快速敲击一次,那么拨片就会一直移动,就像我按住键一样。我没有拿着钥匙。我也只是加载这台PC“干净”所以几乎只有Windows(它是Windows 8,如果这有所不同)和Visual Studio和Monogame安装。因此,没有竞争的键控器或类似的东西。
有什么想法吗?
答案 0 :(得分:3)
你忘记了其他,这使得它成为了一个 你现在正在做的是每次下降时将速度设置为0.5,但永远不要改变它。
答案 1 :(得分: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
向量。