UE5のEnhanced Inputについて

 

始めに
UE5ではEnhanced Inputという強化された入力システムがデフォルトで
オンになってます。
FPSやTPSのテンプレートでも使われておりこれらの意味が分からなかったので
備忘録という意味で記事を書きました。

この新機能はボタン長押しや、指定秒数間だけ押した後に
入力を発行するなどかなり高度なことができます。
そしてこの様な機能を利用するために

・InputAction

・Input Mapping Context

という2つのアセットを作成する必要があります。

 

今回はゲームでよくある「2秒間押し続けたら攻撃をする」という処理を
やりたいと思います。

 

目次

 

結論

いきなりですがこのような処理を書き

ボタンを2秒間押し続けると

 

以下のような結果になります。

処理の流れ的には最初に

  • 登録したボタンを押したとき、Startedの処理を実行
  • そのボタンを2秒間押し続けたときにTriggeredの処理を実行

という感じです

 

解説

上記のことを行うのにEnhanced Inputを使用しますが

このEnhanced Inputを使用するには2つのアセットを作成して
セットアップを行う必要があります。

まず適当にTPSテンプレートプロジェクトを作成したら右クリックから

・InputAction

・Input Mapping Context

というアセットを作成します。

 

  • InputAction
    従来のBindAxisとBindActionをまとめて更に長押し等の高度なことを定義できるアセットです
  • Input Mapping Context
    定義したInputActionをまとめて複数まとめて管理するアセットです。

まずInputActionを作成して、適当に名付けした後それを開くと以下の画像のように
なります(今回は攻撃という意味でIA_Attackにしました)。

線で引かれてる部分に注目してほしいのですが

  • Value Type
    入力イベント時に出力する値の型を決めます。
  • Triggers
    これはイベントを発行する為の条件をここで定義します右のプラスボタンを押すと以下のようになります。

    • Down
      ボタンを押してる間だけTriggerを発行する
    • Hold
      指定秒数間だけボタンを押し続けるとTriggerを発行する
    • Pressed
      ボタンを押した時だけTriggerを発行する
    • Released
      ボタンを離した時だけTriggerを発行する

 

  • Modifiers
    入力情報を加工する。右のプラスボタンを押すと以下のようになります。

    • Negate
      指定の軸に対して値を反転します。
      X軸なら本来1.0が出力されるのが-1.0になります。
    • Swizzle Input Axis Values
      入力軸の値を指定のOrder順に入れ替えて調整する。

 

説明は大体こんな感じです。
さて、先ほど作成したInputActionの設定はこんな感じになりました

攻撃は2秒間溜めた後に行いたいので上の画像のような設定にします。

 


次に作成したInputActionをMappingContextに登録します

Mappingsの横にあるプラスボタンを押すと以下の様に登録できるので

 


作成したInputAction(IA_Attack)を登録します。

 


登録すると以下のようになります。

ここで登録したInputActionにはどのキーを対応させるかを決定します。

 


ここまで行ったらセットアップは完了です!!



以下の画像のように登録したInputAction名(IA_Attack)のイベント関数を

検索ボックスから出現させることができます


画像を見ると様々な入力ピンがありますがそれぞれ意味があります。

  • Triggered
    指定した条件によってTriggerが発生した時、もしくは発生中に
    入力イベントを発行します
  • Started
    Triggerの条件を検知する時に、入力イベントを発行します
  • Complited
    Triggerが終了した時に入力イベントを発行します
  • Canceled
    Triggerが発生しなかった時に入力イベントが発生します
  • Action Value
    InputActionアセットの部分で定義したものが表示されます。

 

なお、作成したInputActionからイベントを動作させるには
最初に以下の処理を書く必要があります

これは作成したInput Mapping Contextを登録するという処理です
これでようやく入力処理を実行することができます。

 

結論再び

最初の画像と同じですがセットアップを行った後、このような処理を書いた後に
指定したボタンを2秒間押し続けると

 

 

チャージ開始
チャージ攻撃!!

と表示されるはずです、実際に試してみると。

予想通りの結果になりました。

 

まとめ

手順としては

  1. InputActionとInput Mapping Contextを作成する
  2. InputActionに入力の定義を行う
  3. 作成したInputActionたちをInput Mapping Contextに登録して
    キーバインディングを行う
  4. BP上で処理を記述する

最初は従来のBindingInputと違い結構設定項目があり戸惑うかもしれませんが
慣れてくるとかなり高度なことができると思います。

 

皆さんもぜひいろいろいじって試してみて下さい