Я создаю простую 3D-игру для Windows 7 на C ++, используя бесплатную версию физического движка Havok.Я хочу использовать клавиши 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, но не могу найти простых объяснений того, как их использовать, и насколько я могу судить, они больше основаны на событиях, чем асинхронны.
Есть ли проблема с фрагментомвыше, или я должен попробовать другой подход?