キーダウンイベントの取得方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
イベント

キーダウンイベントの取得方法

#1

投稿記事 by イベント » 16年前

case WM_KEYDOWN:
    Key[wp] = TRUE;
    break;

case WM_KEYUP:
    Key[wp] = FALSE;
    break;
という感じでキー情報を取っております。

これだと押した瞬間だけの処理ってできなくないでしょうか?
例えばキーボタンが押したときだけ弾を発射するような処理を入れたい場合
カウンター的な変数を作らなくてはいけません・・・

押した瞬間だけ処理を行うにはどうしたらよいのでしょうか?

BEMANI

Re:キーダウンイベントの取得方法

#2

投稿記事 by BEMANI » 16年前

>>イベントさん
今のキー情報と、前回(1フレーム前)のキー情報があれば押した瞬間を判定することができます。
押しっぱなしの処理はこんな感じになります。
「今のキー情報が押されていて、前回のキー情報も押されている」


押した瞬間はこんな感じです。
「今のキー情報が押されていて、前回のキー情報は押されていない」

バグ

Re:キーダウンイベントの取得方法

#3

投稿記事 by バグ » 16年前

私はGetKeyboardState関数を定期的に呼び出して判定しています。
使いまわしが出来るように、押下判定用のクラスを作成してますが、アプローチが違うので、参考にはならないかもしれませんけど、一応添付しておきますね(^_^;)

チルチル

Re:キーダウンイベントの取得方法

#4

投稿記事 by チルチル » 16年前

ゲームプログラミングの館のGetHitKeyStateAll_2関数を使うのが良いんじゃないんでしょうか?
これはカウンタを使いますが他の方法だとフレームの進行と噛み合わないと思うので・・
どのくらい押されているかもわかりますし・・

もしくはループの最初で

if(キー入力状態が0)

キーの入力状態を更新

if(キーの入力状態が1になっていたら)

フラグか何かを立てる

のような処理を行えば良いんじゃないでしょうか?

GetHitKeyStateAll_2関数の処理を簡略化しただけですが
入力状態を格納する変数を流用すれば新たに変数を作らなくてもいいですし・・

閉鎖

“C言語何でも質問掲示板” へ戻る