[DllImport("user32.dll")]
public static extern int GetKeyboardState(byte [] lpKeyState);
...
byte[] bCharData = new byte[256];
GetKeyboardState(bCharData);
[DllImport("user32.dll")]
static extern short GetKeyState(VirtualKeyStates nVirtKey);
...
public static bool IsKeyPressed(VirtualKeyStates testKey)
{
bool keyPressed = false;
short result= GetKeyState(testKey);
switch (result)
{
case 0:
// Not pressed and not toggled on.
keyPressed = false;
break;
case 1:
// Not pressed, but toggled on
keyPressed = false;
break;
default:
// Pressed (and may be toggled on)
keyPressed = true;
break;
}
return keyPressed;
}
2 回答
获取键盘的状态并检查所需键的状态 .
事件不是游戏的最佳方式 . 你需要更快的响应 .
另一种方式,取自here,
More links.
基本上,这些已经在网上提供 . 在询问前尝试搜索 . 它会更快:)
假设您有一个“游戏循环”,用键盘更新您正在移动的对象 . KeyDown事件应将对象状态更改为“向上移动” . 然后你的循环每次运行时都会给它新的位置 .
KeyUp事件应该将状态更改回“空闲” . Iff状态仍在“向上移动” .
您现在不再依赖按键重复来保持对象移动 . 并且玩家可以同时按下多个键 .