【UE5】Enhanced Inputプラグインを使用したプレイヤーの移動方法

参考：[公式学習用動画](https://dev.epicgames.com/community/learning/courses/kry/unreal-engine-build-a-third-person-character-from-scratch/90n/unreal-engine-adding-a-basic-camera-and-placing-the-character-in-the-world)、[公式ドキュメント](https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/Input/)

UE5から追加された実験的機能であるEnhanced Inputの使用方法を記載する。
※UE4と同等の方法でも移動方法の設定はできるので、本プラグインは必須ではない。ただ、移動方法の管理はプラグインありの方がしやすい印象

#### 1. 事前設定
Enhanced Inputで検索して、チェックボックスにチェックを付け、エディタを再起動する。
「プロジェクト設定」で「エンジン」>「インプット」>「Default Classes」の設定を以下に変更する
(初期状態だとEnhancedが付いていないクラスが選択されている)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/b02a7a92-a262-7271-cda5-2fd07f103218.png)

#### 2. キーマッピングの設定
例として、WASDまたはゲームパッド左スティックで上下左右、マウス移動またはゲームパッド右スティックで回転を行う操作設定を作成する。
###### 2-1. 入力アクションの追加
入力アクションはマッピングされたキーが入力された場合の値の入出力方法、フォーマット等の動作を管理する
コンテンツドロワーで右クリック＞入力＞入力アクションを選択することで追加できる。

以下に、作成例と説明を記載する
[コンテンツドロワー上の見え方]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/3576ae50-9cf9-1914-8d19-25c52f2e5761.png)
[入力アクションの詳細設定画面]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/9da081c9-a186-daf1-a2ab-006437c36de6.png)
・IA_moveForwardCC：前後移動時のアクション設定
・IA_moveRightCC：左右移動時のアクション設定
・IA_moveTurndCC：回転時のアクション設定
設定内容は3つとも同じで、上記詳細設定画面参照。value typeがデフォルトだとDigital(bool)になっているため、Axis1D(float)に変更。
###### 2-2. 入力アクションマッピングコンテキスト追加
入力アクションマッピングコンテキストは入力アクションに対しての入力キーのマッピングを行う
コンテンツドロワーで右クリック＞入力＞入力アクションマッピングコンテキストを選択することで追加できる。

以下に、作成例と説明を記載する
[コンテンツドロワー上の見え方]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/aa143c11-ee8b-2be2-d03b-bd8f59e5a1c3.png)
[IA_moveForwardCCの設定画面]
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/09d77fcb-4a78-5935-1d3b-ba5b2b253197.png" width=50%>

2-1で作成した入力アクションに対し、キーとゲームパッドの入力を以下のようにマッピングしていく
- IA_moveForwardCC
  - W キー
  - S キー　＋ Modifiers 「Negate」(Negateは出力を負の値として出す設定)
  - ゲームパッド左サムスティックY軸 ＋ Modifiers「Dead Zone」Type「Axial」
- IA_moveRightCC
  - D キー
  - A キー　＋ Modifiers 「Negate」
  - ゲームパッド左サムスティックX軸 ＋ Modifiers「Dead Zone」Type「Axial」
- IA_moveTurndCC
  - マウスのX軸
  - ゲームパッド右サムスティックX軸 ＋ Modifiers「Dead Zone」Type「Axial」

以上でキーマッピングの設定は完了。
ここまでの設定内容をIA_moveForwardCCを例に簡単に説明すると、入力アクションマッピングコンテキストでWキーを押したときに正の値、Sキーを押したときに負の値を入力アクションに対して入力するよう設定し、入力アクションはキーが入力される間、float型で値を出力する設定になっている。ゲームパッドのスティック入力の場合は、スティックが正の値、負の値両方入力アクションに入力する。
次に、入力アクションを使用したBPでのイベントの設定方法を記載する。

#### 3. 入力アクションのBP設定
前提として、元となるキャラクターBPを作成する。設定内容はスケルタルメッシュに好きなものを設定、スプリングアームとカメラで三人称視点に見えるように設定する。(特に追加の設定もなく基本的な設定なので詳細は省く)

BPのイベントグラフに以下のBPを追加する。

入力アクションマッピングコンテキスト追加用BP「Add Mapping Context」に2-2で作成したマッピングコンテキストを設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/0a303453-9a03-94d2-06ad-d60553fb51c2.png)
上下左右の移動用BP
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/43591d09-6247-559d-823d-90a24bcafbe3.png)
回転用BP
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/08b1668c-80c5-9059-ffed-348d3bae3f41.png)

見本
![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1235659/8b7c1ec7-38f8-9a00-9ac5-980f4e8c5313.gif)

以上。(上手くいかなかった場合、参考資料に記載した動画が分かりやすいのでおすすめです。)

本プラグインを使用することでキー入力を1つの入力イベントとしてまとめることができるのでとてもいいですね。
また、ゲーム内で入力キーを変えたいときにも役立ちそうです。