ページ 1 / 1
キーの連続入力について
Posted: 2011年3月30日(水) 21:37
by 500ml
只今、アクションゲーム(のようなもの)を作っているのですが攻撃部分がうまくいきません。
アクションゲームとかだと同キー(例えば、xキー)を連続して入力するとコンボ攻撃ができたりしますよね?
あれをやろうとしているのですがうまくいきません。
具体的には、一回目xキーを押し、一回目の画像を描画した後そのまま連続してxキーを押しても反応がありません。
zキーを押しながらxキーを押す、という風に変更すると二回目の攻撃まで出来るのですが・・・。
Re: キーの連続入力について
Posted: 2011年3月30日(水) 22:11
by あたっしゅ
>アクションゲームとかだと同キー(例えば、xキー)を連続して入力するとコンボ攻撃ができたりしますよね?
>あれをやろうとしているのですがうまくいきません。
>具体的には、一回目xキーを押し、一回目の画像を描画した後そのまま連続してxキーを押しても反応がありません。
「同じキーを連続して入力」というのは、「キーを押す、キーを放す、また同じキーを押す」ということです。
「キーを放す」を見てますか ?
って、こういうことじゃない ?
Re: キーの連続入力について
Posted: 2011年3月30日(水) 22:22
by a5ua
例えば、以下のような状態遷移で実現するのはどうでしょうか。
キャラクターは、[待機]、[攻撃1]、[攻撃2]という3つの状態間を遷移するものとします。
このとき、各状態における処理を以下のようにする。(数値は具体例)
[待機]
・'X'が押された → 攻撃1に遷移
[攻撃1]
・攻撃1が始まってから、20フレーム以内に'X'が押された → 次の状態を攻撃2に変更
・20フレームから40フレームの間 → 何もしない
・40フレーム経過 → 次の状態(デフォルトでは待機、'X'が押されていたら攻撃2)に遷移
[攻撃2]
・攻撃2が始まってから、60フレームの間 → 何もしない
・60フレーム経過 → 待機に遷移
Re: キーの連続入力について
Posted: 2011年3月30日(水) 23:15
by 500ml
>>あたっしゅさん、a5ua さん
ありがとうございます。それは重々承知しているつもりなのですが、
待機状態→x を押す→攻撃1に遷移→一定時間内に再びx を押す→反応しない(待機状態に戻る)・・・と。
(うまく説明できませんね説明下手ですみません。)
ちなみに、攻撃1の後に CheckHitKey( KEY_INPUT_X ) で判定してやると今度は一度x を押しただけで攻撃2まで遷移してしまうようになりました。
Re: キーの連続入力について
Posted: 2011年3月31日(木) 00:25
by jay
ではキー入力の取得の仕方を少し工夫してみるのはどうでしょうか
これは僕がいつも実際にやっていることですが
まずkey_xという変数を宣言します(実際は管理がしやすいようにキー入力の状態を保存する構造体を作っていますが)
そして入力状態の取得にはこんな感じのコードを書きます
コード:
if(CheckHitKey( KEY_INPUT_X ) != 0)
key_x++;
else
key_x=0;
こうすることでXキーを押している間key_xの値は増え続け、キーを放すと0に戻ります。
500ml さんが書きました:攻撃1の後に CheckHitKey( KEY_INPUT_X ) で判定してやると今度は一度x を押しただけで攻撃2まで遷移してしまうようになりました。
恐らくこうなってしまう原因は、F毎に
0か1か(入力があるかないか)だけで判定してしまっているからだと思います
上記の方法をとれば
攻撃1の状態の時にkey_xの値が1になれば(改めてXを入力すれば)攻撃2の状態に移行させる
という処理を作れると思います。
この方法の場合、キーを押している間はkey_xの値が増え続けるというのがミソです。
Re: キーの連続入力について
Posted: 2011年3月31日(木) 11:05
by 500ml
なんとかボタンを押している間だけ攻撃をさせる(コンボ)、ボタンを離すと待機状態に戻る、ということには成功いたしました。
難しいですね・・・。
>>jayさん
ありがとうございました。