我正在使用免费版本的 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,但我找不到关于如何使用它们的简单解释,而且据我所知,它们比异步更基于事件。
上面的代码片段有问题,还是我应该尝试另一种方法?