UE5でFPSゲーム制作 Part4-EnhancedInput

Enhanced Input

EnhancedInputはこれまでよりも複雑な入力処理に対応することができる入力システムです。UE5.1からはプロジェクト設定のデフォルトのプレイヤー入力クラス、入力コンポーネントクラスも変更されており正式に実装されたことがわかりました。

必要なものは入力マッピングコンテキストと入力アクションです。

入力→入力アクションを選択し、IA_Moveと名付けます。

IA_Moveを開いてValueTypeをAxis2Dに変更します。

 

IA_Moveを複製してIA_Lookと名付けます。

次に入力→入力マッピングコンテキストを選択し、IMC_FPSと名付けます。

アクションマッピングを2つ追加し、IA_MoveとIA_Lookを選択します。

 

IA_Moveの設定をします。キーボードのWASDを選択し、それぞれModifiersを追加していきます。前進に対して後退をNegate、左右はSwizzle Input Axis Valuesと反転であるNegateを選択します。

 

次にIA_Lookの設定です。マウスのXY2D軸を選択し、Modifiersにnegateを選択します。

インデックスのX、Zはチェックを外します。

 

実装にはPlayerContorollerクラスでEnhanced InputLocal Player Subsystemを利用してマッピングコンテキストを追加する必要があります。

PlayerControllerクラスに直接実装するか、ChracterクラスからPlayerControllerクラスをキャストして実装するかなどいくつかの実装方法があります。今回はC++で作ったPlayerControllerBaseクラスで実装します。

 

PlayerControllerBase.h

PlayerControllerBase.cpp



コンパイルしたら、BP_PlayerControllerを開いてDefault Mapping Contextを作成したIMC_FPSにします。

 

ここまで来たらBP_Characterを開きます。

Enhanced Input ActionのIA_MoveノードからAdd Movement Inputにつなぎます。Get Control RotationノードのReturn Valueで構造体ピンを分割します。

このあたりの実装方法もいろいろあります。FPSテンプレートで実装されてる方法とは微妙に違う方法で実装してみました。

 

最後はEnhanced Input ActionのIA_LookノードからAdd Controller Yaw InputとPitch Inputにつなぎます。IA_KookノードのAction Valueで構造体ピンを分割してXとYに分けます。

 

これで、ゲーム内にスポーンしたキャラクターが歩いたり、カメラを動かせるようになりました。