ボタンの同時押し 暴発は防ぐ
Posted: 2014年4月16日(水) 22:08
Aボタン(Aの弾を発射)、Bボタン(Bの弾を発射)、
そして同時押しの場合は(Cの弾を発射)としたいのですが
やはり、Cの弾を発射させると、AやBの弾が暴発し、
Cの弾と一緒に出てしまいます。
で、検索し、こちらの掲示板のこの質問に対してのISLeさんのレスの
http://dixq.net/forum/viewtopic.php?f=3&t=12442
プログラムでどうにかするのであれば、
【1フレーム目】A,Sキーのいずれかあるいは両方が押されたらカウント開始
【3フレーム目】Aキーのみが押されていたらモーション1を開始。
Sキーのみ押されていたらモーション2を開始。A,Sキー両方押されていたらモーション3を開始。
とすれば良いのではないでしょうか。
を参考に、自分で作って試しているのですが
A,B,C、いずれかの弾が出ない、または、押してる間弾が出っ放し、等
どうもうまくいきません。。。。
どの部分がおかしいのか、どうすれば上記の内容を正常に行えるプログラムとなるのか
ご教示頂けないでしょうか。
イメージとしては、
ボタンは押しっぱなしでは連射させない仕様でいきたく、
なにかが押されるたびにフレームのカウントを取り
カウント後にはリセット。
その時にどのボタンを押しているかで
処理される内容が変わる、と言った感じです。
いろいろいじってたら、弾すら出なくなりました。。。
プログラム文もシンプルでいいはずなのに、
再現出来ず、情けないです。
そして同時押しの場合は(Cの弾を発射)としたいのですが
やはり、Cの弾を発射させると、AやBの弾が暴発し、
Cの弾と一緒に出てしまいます。
で、検索し、こちらの掲示板のこの質問に対してのISLeさんのレスの
http://dixq.net/forum/viewtopic.php?f=3&t=12442
プログラムでどうにかするのであれば、
【1フレーム目】A,Sキーのいずれかあるいは両方が押されたらカウント開始
【3フレーム目】Aキーのみが押されていたらモーション1を開始。
Sキーのみ押されていたらモーション2を開始。A,Sキー両方押されていたらモーション3を開始。
とすれば良いのではないでしょうか。
を参考に、自分で作って試しているのですが
A,B,C、いずれかの弾が出ない、または、押してる間弾が出っ放し、等
どうもうまくいきません。。。。
どの部分がおかしいのか、どうすれば上記の内容を正常に行えるプログラムとなるのか
ご教示頂けないでしょうか。
---------更新関数内------
//AかBのボタンが入力された
if(Key & PAD_INPUT_A && this->Abuttonflg==false || Key & PAD_INPUT_B && this->Bbuttonflg==false)
{
this->buttoncount_flg=true;//なにかのボタンを押したらスタート
}
if(this->buttoncount_flg==true)//フラグが立ってる間
{
this->buttoncount++;//押してる時間をカウント中
}
if(this->buttoncount > 3){//3フレーム後、どのボタンが押されているかを判断して実行
if(Abuttonflg==true && Bbuttonflg==false){//Aボタンだけが押されてた状態
Aの弾発射
}
if(Abuttonflg==false && Bbuttonflg==true){//Bボタンだけが押されてた状態
Bの弾発射
}
if(Abuttonflg==false && Bbuttonflg==true){//AとB、両方押されてた状態
Cの弾発射
}
this->buttoncount_flg==false;//リセット
}
//各ボタンが押されているかどうかの判断
if( (Key & PAD_INPUT_A)==0 ){
Abuttonflg=false;//ボタンを放していればfalse
}
if( (Key & PAD_INPUT_B)==0 ){
Bbuttonflg=false;
}
イメージとしては、
ボタンは押しっぱなしでは連射させない仕様でいきたく、
なにかが押されるたびにフレームのカウントを取り
カウント後にはリセット。
その時にどのボタンを押しているかで
処理される内容が変わる、と言った感じです。
いろいろいじってたら、弾すら出なくなりました。。。
プログラム文もシンプルでいいはずなのに、
再現出来ず、情けないです。