ページ 1 / 1
今ボタンを押した の判定
Posted: 2007年2月08日(木) 17:21
by しぐ
初めて投稿させてもらいます。よろしくお願いします。
ゲームプログラミングの館で紹介されている内容は重宝させてもらっています。
今、何かを「押した」という判定をしたい時、ほぼ全部のコマンドにおいて判定したいので、それ全てに変数を用意していたら大変になってしまうので、
何かいい方法はないか質問させてもらいました。
くだらない質問でごめんなさい。
Re:今ボタンを押した の判定
Posted: 2007年2月08日(木) 17:30
by 管理人
しぐさん、こんにちは^^
私がやっている方法であって、最良かどうかはわかりませんけど、
GetHitKeyStateAll( KeyBuf ) ;
の関数を使う時ですよね?
char KeyBuf[256];
と
char KeyBufOld[256]={};
を2つ用意します。
ループの最初に
GetHitKeyStateAll( KeyBuf ) ;
を呼びます。
この関数の次に、
for(i=0;i<256;i++)
if(KeyBufOld==0 && KeyBuf==1)//前回は入力がなく、今回入力が有る
KeyBuf=2;
これを書き、ループの最後に
for(i=0;i<256;i++)
KeyBufold=KeyBuf;
これを書きます。
すると、処理の中でKeyBufが2の時、その瞬間に押した事がわかります。
KeyBufが>0の時、押している事が解ります。
勝手にそんな感じで使っているのですが、他に方法があるのかもしれません^^;
とりあえず私がよいと思っている方法は上記の方法です^^
ゲームプログラミングの館は、とにかく仕組みをわかってもらおうとして、逆に手間になったり非効率になったりする方法で紹介している部分が多々ありますので、
解ってきたらご自分でアレンジされることを期待しています^^;
Re:今ボタンを押した の判定
Posted: 2007年2月08日(木) 17:41
by 管理人
ゲームプログラミングの館で紹介している歩くモーションも実はあの方法ではやってほしくないんですよ><;
あれでは1マス単位で移動する仕様ではなかった場合、中途半端なかっこうでとまってしまうはずです。
それに、以前質問もでましたが、クオータービューにするとき一筋縄ではいきません。
本当は、モーションにカウンタをつけ、歩き出して何カウントかを計算して表示画像を決定してほしいんです。
しかしそうするとソースが少々難しくなってしまいますので、避けました・・・が、かといってあれも解りやすくは無いような気がします^^;
色々ソースを書いていく中でアルゴリズムを改善していってください☆(他人任せ
Re:今ボタンを押した の判定
Posted: 2007年2月09日(金) 11:51
by GPGA
私の場合、キー専用の構造体を用意してアプリ起動時に初期化し
毎ループの最初に更新を行い、実際にキーの取得を行う必要が出たときに
専用の関数を呼び出し、キーの取得を行うということをやっています。
添付ファイルにサンプルを乗せました。
上キー押しっぱなし、下キーを押したとき、Zキーを離したときに
文字が出るようになっています。