我正在使用免费版的Havok物理引擎在C ++上用Windows 7创建一个简单的3D游戏。我想使用WASD键来移动角色。代码的结构是这样的,我需要异步捕获这个输入;在场景的每一帧中都有一个函数来更新角色的位置(我想尝试检查当前是否按下某个键而不是使用某种类型的事件监听器)。我四处寻找一个很好的解决方案,因为我对win32函数知之甚少,并把它放在一起:
if (GetAsyncKeyState(0x41) & 0x8000) posX=-1.0f; //A
if (GetAsyncKeyState(0x44) & 0x8000) posX=1.0f; //D
if (GetAsyncKeyState(0x57) & 0x8000) posX=1.0f; //W
if (GetAsyncKeyState(0x53) & 0x8000) posX=-1.0f; //S
在检查了一些printf语句之后,可视化调试器似乎没有接收任何输入。我知道WM_KEYDOWN和WM_KEYUP,但我找不到关于如何使用它们的简单解释,据我所知,它们比基于事件更基于事件。
上面的代码段是否有问题,或者我应该尝试其他方法吗?
答案 0 :(得分:0)
最佳猜测:您正在检查“A
”而不是“a
”。除非你按住shift键,否则只需按a键就不会触发你的代码。
答案 1 :(得分:0)
看来我的问题毕竟不是GetAsyncKeyState(),而是我使用了FindWindow()和GetWindowRect()。它没有意识到当前窗口是可视化调试器。固定的。