キーの連続入力について

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

キーの連続入力について

#1

投稿記事 by 500ml » 13年前

只今、アクションゲーム(のようなもの)を作っているのですが攻撃部分がうまくいきません。
アクションゲームとかだと同キー(例えば、xキー)を連続して入力するとコンボ攻撃ができたりしますよね?
あれをやろうとしているのですがうまくいきません。
具体的には、一回目xキーを押し、一回目の画像を描画した後そのまま連続してxキーを押しても反応がありません。
zキーを押しながらxキーを押す、という風に変更すると二回目の攻撃まで出来るのですが・・・。

アバター
あたっしゅ
記事: 664
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: キーの連続入力について

#2

投稿記事 by あたっしゅ » 13年前

>アクションゲームとかだと同キー(例えば、xキー)を連続して入力するとコンボ攻撃ができたりしますよね?
>あれをやろうとしているのですがうまくいきません。
>具体的には、一回目xキーを押し、一回目の画像を描画した後そのまま連続してxキーを押しても反応がありません。

「同じキーを連続して入力」というのは、「キーを押す、キーを放す、また同じキーを押す」ということです。
「キーを放す」を見てますか ?


って、こういうことじゃない ?
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

アバター
a5ua
記事: 199
登録日時: 13年前

Re: キーの連続入力について

#3

投稿記事 by a5ua » 13年前

例えば、以下のような状態遷移で実現するのはどうでしょうか。

キャラクターは、[待機]、[攻撃1]、[攻撃2]という3つの状態間を遷移するものとします。
このとき、各状態における処理を以下のようにする。(数値は具体例)

[待機]
 ・'X'が押された → 攻撃1に遷移

[攻撃1]
 ・攻撃1が始まってから、20フレーム以内に'X'が押された → 次の状態を攻撃2に変更
 ・20フレームから40フレームの間 → 何もしない
 ・40フレーム経過 → 次の状態(デフォルトでは待機、'X'が押されていたら攻撃2)に遷移

[攻撃2]
 ・攻撃2が始まってから、60フレームの間 → 何もしない
 ・60フレーム経過 → 待機に遷移

500ml

Re: キーの連続入力について

#4

投稿記事 by 500ml » 13年前

>>あたっしゅさん、a5ua さん
ありがとうございます。それは重々承知しているつもりなのですが、
待機状態→x を押す→攻撃1に遷移→一定時間内に再びx を押す→反応しない(待機状態に戻る)・・・と。
(うまく説明できませんね説明下手ですみません。)
ちなみに、攻撃1の後に CheckHitKey( KEY_INPUT_X ) で判定してやると今度は一度x を押しただけで攻撃2まで遷移してしまうようになりました。

jay
記事: 314
登録日時: 13年前
住所: 大阪市
連絡を取る:

Re: キーの連続入力について

#5

投稿記事 by jay » 13年前

ではキー入力の取得の仕方を少し工夫してみるのはどうでしょうか

これは僕がいつも実際にやっていることですが
まず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の値が増え続けるというのがミソです。
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

500ml

Re: キーの連続入力について

#6

投稿記事 by 500ml » 13年前

なんとかボタンを押している間だけ攻撃をさせる(コンボ)、ボタンを離すと待機状態に戻る、ということには成功いたしました。
難しいですね・・・。

>>jayさん
ありがとうございました。

閉鎖

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