無料版のHavok物理エンジンを使用して、C++のWindows7で簡単な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を知っていますが、それらの使用方法についての簡単な説明を見つけることができず、非同期よりもイベントベースであることがわかります。
上記のスニペットに問題がありますか、それとも別のアプローチを試す必要がありますか?