古の技術でゲームプログラミング 第9回
キーボード入力の取得方法について。
私が思うゲームではあまりキーボードの出番はないかなと思いますが、とはいえゲームパッドをつないでないと動かせないんじゃ話になりません。
なのでキーボード入力についても状態を取得できるようにしておきたい。
本来、Windowsアプリではキーが押されたり放されたりしたときは、ウインドウメッセージが発行されてウインドウ側で処理が行えます。
ですがゲームにおいてはあまり使われない方法かもしれません。
また今回の私の計画ではゲームの処理はウインドウとは別のスレッドで処理するのでウインドウ経由でキーの状態を取得するのは回りくどい気がします。
あと正直なところそもそもウインドウメッセージでやったことがないのでわからない!
とゆーことで、キーボードのキーの状態を取得するAPIちゃんを紹介。
SHORT GetAsyncKeyState(int vKey);
この関数はウインドウメッセージとかには全く関係なく、そのときのキーの状態をGetしてくれます。
パラメータには仮想キーコード(以下参照)をします。
仮想キーコード (Winuser.h) - Win32 apps | Microsoft Learn
※文字の割当たってるキーは概ねアスキーコードそのまま。
リターンは以下のようになってます。
キーが押されてる : 0以外
キーがおされてない : 0
本当はビット単位で意味があるんだけど上記の解釈で問題ない。
で、試しに全部のキーの状態を調べていてわかったんだけど、ずっと押されてる状態のキーがいたりする。
OEMに割当たってるコードで何のキーなのかさっぱりわからないんだけど。
全部のキーコードを調べて何か押されてたら…みたいな処理をするときはあらかじめチェックする範囲を限定しておくとか考えないといけないっぽい。
おしまい。