UE5のキー入力のイベントの作り方
UE5でキー入力のイベント処理を作る際は注意したい。
UE5.0までは上部メニューの「編集」→「プロジェクト設定」を開いて、キーの設定を行うのが一般的であった。
だが、UE5.1からは新たに追加されたEnhanced Input(Input ActionとInput Mapping Contextで設定)を使ってキー設定を行うのが推奨されるようになった。
UE5.3時点では、以前のようにプロジェクト設定からキーの設定を行うことも可能。だがいずれ撤廃される可能性が高い。
今からゲーム制作を行うのなら、EnhancedInputを使ったキー入力設定の作り方をマスターしたい。作り方を紹介していく。
キー入力処理の作り方目次
Input Action作成・設定Input Mapping Context作成・設定
キー入力のイベント処理を行う
目次にもどる
Input Action作成・設定
今回はサードパーソンのテンプレートで説明を行っていく。
.jpg)
コンテンツブラウザのThirdPerson→input→ActionsのフォルダにはIA_Jump、IA_Look、IA_Moveの3つのファイルがある。
.jpg)
これらはInput Actionと呼ばれるファイルであり、既にEnhancedInputの設定がされている。そのためゲームを実行すれば、ジャンプ、マウスによる視点移動、移動については行えるわけである。
まずは新たなInput Actionというファイルを作成する。
コンテンツブラウザの任意の場所で右クリック→入力→入力アクションのように選択すれば作成できる。
.jpg)
今回はInput Actionのファイルの名前をIA_Fireとすることにした(この記事ではやらないがボタンを押したら銃を撃つアクションを作成予定)。
IA_Fireのファイルをダブルクリックで開こう。
このファイルではキーを押した時や離した時のイベントを作成するようにしたい。
よって、「Value Type」の項目をDigital(bool)に変更する。
.jpg)
加えて、Triggersでトリガーされる際の細かな条件を決めることはできる。よく使うのは以下の通り。
Down
キーが押され続けている間トリガーされ続ける。
Hold
指定した秒の間だけキーが押され続けた時にトリガーされる。
Pressed
キーを押した時のみトリガーを行う。
Released
キーを離した時のみトリガーを行う。
Pulse
押している間、一定周期でトリガーされる。
以上の設定を使ってもいいのだが、Triggersがnoneのままでも、キーが押された時、離れた時、押し続けられた時の設定は行える。そこで今回はTriggersはnoneのまま進める。この設定があるということは覚えておこう。
目次にもどるInput Mapping Context作成・設定
Input Mapping Contextと呼ばれるファイルで、先ほど作ったInput Actionに具体的なキー割り当てを行う必要がある。
コンテンツブラウザのThirdPerson→inputのフォルダにIMC_DefaultというInput Mapping Contextファイルが既に作られている。
今回は新たにInput Mapping Contextを作る必要はないが、コンテンツブラウザの任意の場所で右クリック→入力→入力マッピングコンテキストのように選択すれば作成可能。
.jpg)
IMC_Defaultをダブルクリックして開く。
マッピングのすぐ下にある+マークを選択すると新たなInput Actionファイルを追加可能。

先ほど作成したIA_Fireがあるので追加する。
IA_Fireのすぐ左にある三角ボタンを押して展開し、その下のNoneと書いている部分を選択し、今回はマウス→マウスの左クリックと選択する。
.jpg)
これでマウス左ボタンを行った際に処理を行う準備ができた。
目次にもどるキー入力のイベント処理を行う
操作キャラのブループリント(サードパーソンのテンプレートを使っているなら、コンテンツブラウザのThirdPerson→BlueprintsのフォルダにあるBP_ThirdPerson)をダブルクリックで開こう。
Enhanced Inputを使うためには使用しているPlayer Controllerに使いたいInput Mapping Contextを登録する必要がある。
だが、その設定はBP_ThirdPersonでは全てに行われている。

今回は特に作業はする必要はないが、この設定があることで作ったInput Actionのファイルをイベントとして呼び出せるようになることは覚えておこう。
イベントグラフタブを選択し、右クリックして IA_ のように検索すれば先ほど作ったInput ActionのIA_Fireのイベントノードが出てくる。
.jpg)
IA_Fireを選択してノードを作成し、今回はテストとしてTriggeredからワイヤーを出し、Print Stringに「撃つ」と入力した。
.jpg)
ゲームを実行しマウス左ボタンを押すと、ボタンが押されている間は画面左に「撃つ」と出続けることから、キー入力処理が行われていることが確認できる。
.jpg)
IA_Fire(Input Actionのノード)のイベントの各出力の説明は以下の通り。前述したInput ActionのTriggersの設定次第で挙動が変化するので注意しよう。
Trigegered
全てのトリガーの評価が済んでいる。Triggersがnoneのままの場合はキーが押され続けている間、後続処理を行う。
Started
トリガー評価を始めるイベントが発生した。Triggersがnoneのままの場合はキーが押された瞬間に後続処理を1回行う。
Completed
トリガーの評価が完了した。Triggersがnoneのままの場合は押されたキーが離された瞬間に後続処理を1回行う。
Ongoing
トリガーが続けて処理されている。Triggersがnoneのままの場合は何も出力されない。使い方は自分もわかっていない部分が多いので、わかったら追記します。
Canceled
トリガーがキャンセルされた。Triggersがnoneにしているなら何も出力されない。例えば、TriggersをHoldに設定しキーを何秒か押すことでイベントを発生するようにした場合には使える。1秒でイベントを起こす設定にした場合は0.5秒キーを押して離すとイベント発動が失敗する。その失敗した場合の処理を作りたい場合はこの出力を使おう。