【发布时间】:2013-12-12 09:48:54
【问题描述】:
这是我获取键盘状态并根据按下的键更改纹理的方法。
private void CheckKeyboardAndUpdateMovement()
{
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyUp(Keys.Left)) { ChangeTexture(1); }
if (keyboardState.IsKeyUp(Keys.Right)) { ChangeTexture(2); }
if (keyboardState.IsKeyDown(Keys.Left))
{
Movement -= Vector2.UnitX;
ChangeTexture(3);
}
if (keyboardState.IsKeyDown(Keys.Right))
{
Movement += Vector2.UnitX;
ChangeTexture(4);
}
if ((keyboardState.IsKeyDown(Keys.Space) || keyboardState.IsKeyDown(Keys.Up)) && IsOnFirmGround())
{
Movement = -Vector2.UnitY * JumpHeight;
}
}
如果按下方向,它就可以工作,但是当没有按下任何东西时它就不会做自己的工作(只是因为IsKeyUp 都是真的)。只有案例的顺序才能防止在移动精灵时显示静态纹理......
我的问题是,我怎样才能彻底解决这个问题?我已经有了一个想法,但我一点也不喜欢它......
【问题讨论】:
-
那 4 个纹理是什么?而且,更重要的是,您的游戏在没有按下任何按钮时应该怎么做?我不明白。
-
它们是(1)“精灵向左静止”,(2)“精灵向右静止”,(3)“精灵向左行走”的纹理,(4 ) “精灵向右走”。当什么都没有按下时,它必须静止不动,但面向最后一个方向。
-
是的,肯定更好,而且你的解决方案还不错。
标签: c# xna xna-4.0 keyboard-events