【特定のキーが押されたかどうかを取得したい】



キー入力コマンドを使用する事で、特定のキーが押されたかどうかを調べる事ができます。
今回は決定・キャンセル・サブキーの3種から、どのキーが押されたかを調べるイベントを作成してみたいと思います。

【目標】

 1.イベントに話しかけた後、キー入力を受け付ける。
 
 2.押されたキーに対応した文章を表示する。

 ■関連項目
 【複数のキーが同時に押されたかどうかを取得したい】


【手順】

―― 【1】イベント作成 ――

 まずマップ選択で「サンプルマップA」に切り替えてください。
 分かりやすいところにイベントを作成します。
 グラフィックはニワトリにしましょう。
 (参考:【決定キーで起動するイベント】


―― 【2】キー入力の受け付け ―― 

 イベントウィンドウの右下にある
 「■ コマンド入力ウィンドウ表示 ■」をクリックして
 イベントコマンド入力ウィンドウを開いてください。
 
 左側一覧から「9 キー入力」をクリックして選択します。
 キー入力受け付けの、代入先とキー種はそのまま、
 方向キーのプルダウンをクリックして「受け付けない」を選択してください。
 
 その下にある4つのチェックボックスは、全てクリックして入れておきます。
 
 出来ましたらウィンドウ右下の入力をクリックしましょう。
 
 ※「キーが押されるまで待つ」にチェックが入っていると、
   キー入力コマンドのところでいったん処理が止まり、
   設定されたキーが押されるまでは以降の処理が実行されません。

  


―― 【3】入力の判定(条件分岐) ―― 

 【2】の設定で、キー入力が行われると[このEv:セルフ0]に結果が代入されています。
 その数値によってどのキーが押されたのか、
 あるいは押されていないのかを判断できるという事です。
 
 今度はウィンドウ左から「7 条件(変数)」を選び、設定しましょう。
 
 分岐を3つ使うので、左側チェックボックスを条件3つ分まで選択しておきます。
 数値は、上からそれぞれ「10」「11」「12」と同じに設定して、
 右下の「入力」をクリックです。
 


―― 【4】各分岐内の文章を作成 ―― 

 次に各分岐の中身を作っていきます。
 
 イベントウィンドウを見てください。
 まずこのEvセルフ変数0が10と同じ場合から設定しますので、
 クリックしてカーソルを移動しておきます。
 
 コマンド入力ウィンドウの左から「1 文章の表示」を選択しましょう。
 「決定キーが押されました」と入力します。
 
 同様に、11と同じ場合は「キャンセルキー」が、
 12と同じ場合は「サブキー」が押された時です。
 それぞれ入力していきましょう。
 


 これで完成です。
 マップをセーブしてテストプレイしてみましょう。
 
 まずイベントに話しかけます。
 この時点では移動できなくなるだけで何も変化はありませんが、
 決定・キャンセル・サブキーのどれかを押してみてください。
 
 押したキーに対応した文章が表示されれば成功です。
 お疲れ様でした。
 



【問題が発生した場合】

◆何も表示されずに、キャラクターを動かせた。
 イベントの起動条件が間違っている。
 もしくは「キーが押されるまで待つ」のチェックが外れている可能性があります。
 確認しましょう。
 


【余談】

・キーが押されるまで待たない場合の注意点

 「キーが押されるまで待つ」機能を使用しない場合、少しだけ注意が必要です。
 
 コマンドを入れたループや並列イベント内に2フレーム以上のウェイトがあると、
 毎フレーム判定を取得する事が出来ません。
 つまり、キーを押しても反応してくれないタイミングが発生してしまいます。
 
 そんな時は、別に専用の並列イベントを用意するか、
 イベントの呼び出しなどを利用して毎フレーム判定ができる環境を整えましょう。


・複数のキー入力を同時に扱うには?

 1つのキー入力で複数のキーを受け付けようとすると、
 優先順位によって上書きされてしまい、結局1つ分しか取得する事ができません。
 
 しかし、代入先変数を変更した複数のキー入力コマンドを利用すれば、
 同時に複数のキー入力を取得できます。
 これを利用する事で、キーの同時押しを判定できます。

 ■関連項目
 【複数のキーが同時に押されたかどうかを取得したい】





<執筆者:七海> 


【←にフレームが表示されていない方はここをクリック】