我的角色只能水平和垂直移动。我希望程序同时捕捉两个击键,而不仅仅是一个。我使用WinForms。
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.A)
Player.Move(Direction.Left);
if (e.KeyCode == Keys.D)
Player.Move(Direction.Right);
if (e.KeyCode == Keys.W)
Player.Move(Direction.Up);
if (e.KeyCode == Keys.S)
Player.Move(Direction.Down);
Invalidate();
}
1条答案
按热度按时间disbfnqx1#
您可以使用
GetKeyState
方法获得关键状态:使用
IsKeyDown(Keys.A)
检查键状态时,如果在检查状态时按下键,则该方法返回true
。然后,在每个按键事件中,您可以检查A、W、D、S的按键状态。您可以将这些按键Map到二进制数中的位置,并根据下表计算有效组合:
下面的例子假设表单上有一个标签,我们想用A,W,D,S键移动标签:
一个二个一个一个