指定したキーが押されているかを取得するためには GetAsyncKeyState() 関数を使います。
if (GetAsyncKeyState(VK_LEFT) & 0x8000) { player.x -= player.moveSpeed; } if (GetAsyncKeyState(VK_RIGHT) & 0x8000) { player.x += player.moveSpeed; }
押されているかを取得したいキーは仮想キーコードによって指定します。 Windows の仮想キーコードを参照ください。
もし、引数で渡した仮想キーに対応するキーが押されていた場合は 0×8000 との and で真になります。前述のサンプルのように判定することでキーが押された場合に if 文の中身が実行されるようになります。
ちなみに…
if (GetAsyncKeyState(VK_LEFT)) { // 押されたときの処理 }
…と、書いても問題なく動作する場合が多くありますが、その場合はキーが離された次の関数実行で誤判定を起こします。具体的には押されていないのに押されていると判定されます。
Contributions