【UE5.0.x/UE5.1】Enhanced Input の備忘録(Triggers 編)
そのため、間違ったことを記載している可能性があることをご承知おき下さい。
Enhanced Input の初期設定については省いてます。
UE5.1 では FirstPerson などでプロジェクトを作成すると Enhanced Input が最初から有効になっているため、本記事は UE5.1 + FirstPersonプロジェクトをベースに記載しております。
※UE5.0.x でも利用可能ですが、のちほど記載する Triggers の Combo は UE5.0.x では存在しません。
今回の備忘録ではコンテンツブラウザで右クリック> 入力から
「入力マッピングコンテキスト」と「入力アクション」で利用できる Triggers に絞った内容になります。
その前に「入力アクション」の Value Type だけ見ていきます。
Value Type:
入力するキーがどういう種類の入力かを指定します。
例えば攻撃やジャンプなどの押した離したの入力を取りたい場合は Digital(bool) を利用します。
また、キャラの移動やカメラ移動などの入力は AxisXD を使います。
Axis1D だと1つの入力アクションで1軸、Axis2D だと2軸取れるといった具合です。
UE5.1 のキャラ移動では IA_Move という入力アクションが存在し、「Value Type:Axis2D(Vector2D)」が採用されています。
前後左右で取得する入力の値が違うため
Modifiers にて前後左右の移動を変換(修飾)して利用します。
Triggers / Modifiers については「入力マッピングコンテキスト」でも指定可能です。
(本記事では Modifiers については触れません)
「入力マッピングコンテキスト」とは
キー入力の割り当てや Triggers / Modifiers などの設定を行います。
ここで「入力アクション」を登録し、それに対してどのキーを押せばトリガーされるのかが決定されます。
Triggers
本記事のメイン部分です。
キー入力がトリガーされるタイミングを指定します。
かなり多いですがそれだけ柔軟な入力が取れるようになっています。
分かりやすい順で見ていきます。
Triggers:None
キーを押し続けている間トリガーされ続けます。
画像では IA_Shoot という「入力アクション」を左クリックに割り当て、キーを押している間弾の発射がトリガーされ続けるという挙動です。
恐らく後述する Down と同じ挙動ではないかと思います。
Triggers:Pressed
キーを押した瞬間に1回トリガーされます。
画像では IA_Jump という「入力アクション」をスペースキーに割り当て、押した瞬間に1回ジャンプがトリガーされるという挙動です。
Triggers:Down
キーを押し続けている間トリガーされ続けます。
画像では、左クリックを押し続けている間トリガーされ続けます。
前述の None と同じか、同じような挙動ではないかと思います。
FirstPerson プロジェクトでは弾を発射する際
左クリックするごとに弾を1発ずつ発射します(Pressed)
Down(もしくは None) にすると左クリックを押しっぱなしで弾が連射されるという挙動になります。
発射間隔を空けるようなプロパティはない?ので
少し間隔を空けて発射したい場合は後述の Pulse を利用するといいと思います。
Triggers:Hold
"Hold Time Threshold" で指定した秒数以上キーを押し続けた時にトリガーされ続けます。
上記 Down にトリガーされるまでの時間が追加されたバージョンです。
画像では3秒左クリックを押しっぱなしにするとトリガーされ続けるため弾が連射されるという挙動になります。
"Is One Shot" にチェックを入れると
Hold のトリガー条件を満たした瞬間に1回だけ呼ばれます。
上記の例だと3秒後に1発発射されるという挙動です。
Triggers:Released
キーを離した瞬間に1回トリガーされます。
画像では左クリックを押し、
離したタイミングで1発発射されるという挙動です。
Triggers:Hold And Release
"Hold Time Threshold" で指定した秒数以上キーを押し続けたあと、キーを離した瞬間に1回トリガーされます。
画像では、左クリックを3秒以上押したあとキーを離すと1発発射されるという挙動です。
例えばチャージショットのような何秒以上押して離すような入力が取れるということです。
Triggers:Tap
キーを押したあと "Tap Release Time Threshold" で指定した秒数内にキーを放す離すとトリガーされます。
上記 Released に時間制限がついたようなバージョンです。
画像では、左クリックを押したあと 0.2秒以内にキーを離した時トリガーされます。
Triggers:Pulse
キーを押している間、"Interval" で指定した秒数ごとに1回ずつトリガーされます。
ON> OFF> ON> OFF...という挙動を繰り返し
ON のタイミングでトリガーされるようなイメージです。
"Trigger on Start" にチェックを入れると
キーを押した瞬間に1回トリガーされ、それ以降は "Interval" で指定した秒数が来るごとにトリガーされます。
チェックを外すと "Interval" で指定した秒数が来るまでトリガーされません。
押した瞬間からトリガーしたいかどうかで分かれます。
”Trigger Limit” は、ここで指定した回数のトリガーが発生したらそれ以上トリガーされません。
0を指定すると回数制限はなくなります。
画像では、左クリックを押したタイミングで1発発射し、
2秒おきに弾が3発まで発射されるという挙動です。
(最初に1発> 2秒後に1発> 2秒後に1発で計3発ということです)
例えば銃をフルオートで撃つ際、弾の発射間隔を空けたり ”Trigger Limit” を3にしておくことで3点バーストのような入力が取れるということになります。
Triggers:Chorded Action
少しややこしいトリガーです。
Chorded Action で指定する特定の「入力アクション」がトリガーされており、かつ、この「入力アクション」がトリガーされた場合にトリガーされます。
画像では、IA_Shoot の Triggers に Chorded Action を設定しています。
それに対応する入力アクションが IA_ADS となっており
そこには右クリック+Down が設定されています。
Down は上記の通り押し続けている間トリガーされ続けるので
IA_ADS は右クリックを押し続けている間トリガーされ続けるという事になります。
そして IA_Shoot はそのトリガーが発生していないと左クリックを押してもトリガーされません。
この画像は、FPS でよくあるような右クリックで ADS しながら左クリックで発射のような入力をトリガーできるようにしたものです。
IA_Shoot の Pressed ですが、右クリックを押したまま左クリックを押し続けると連射になるので、1発発射で留めるため使用しています(外せば連射になります)。
Triggers:Combo
UE5.1 より新しく追加された Triggers です。
恐らくこれが一番ややこしい気がします。
まず、黄色枠の所が他と違っていて、この「入力アクション」そのものにはキーの割り当ては出来ません(グレーアウトで操作できなくなっています)
代わりに、画像のピンク枠の部分のように「入力アクション」を設定する必要があります。
"Combo Actions" が配列になっており
"Combo Actions[0]" ~ "Combo Actions[x]" に設定した順番で入力するとトリガーされます。
画像では
Combo Actions[0]:右クリック(IA_ADS)
↓
Combo Actions[1]:左クリック(IA_Shoot)
↓
Combo Actions[2]:左クリック(IA_Shoot)
という順で押すとトリガーされます。
例えばストリートファイターの豪鬼が使う瞬獄殺や
伝説のコナミコマンドのような特定の順番で入力するトリガーを作成することが出来ます。
また、"Time to Press Key" で次のキー入力を受け付ける時間を設定できます。
これはキーを押すごとに次の Combo Actions に設定された "Time to Press Key" 秒以内に入力を完了させないといけないようです。
もう少し具体的に見ていくと、Combo Actions[0] の右クリックを押したタイミングで、次の Combo Actions[1] に設定した "Time to Press Key" 秒以内に入力を完了する必要があります。
そのため、この左クリックは前回の右クリックを押してから1秒以内に入力する必要があります。
更に次の Combo Actions[2] も同様に、設定した "Time to Press Key" 秒以内に入力を完了する必要があります。
そのため、この左クリックは前回の左クリックを押してから1秒以内に入力する必要があります。
Combo の検証1
"Time to Press Key" にマウスオーバーするとこういう説明が出てくるのですが、キーを押すごとに入力完了までのトータル時間が "Time to Press Key" 秒ずつ加算されるのだと勘違いしていました。
そこで疑問が出てきました。
Combo Actions[0] の "Time to Press Key" はどういう扱いなのかです。
簡単にですが下記検証を行いました。
Combo の検証2
Combo Actions[0]:右クリック(IA_ADS)
"Time to Press Key" に3秒を設定。
Combo Actions[1]:左クリック(IA_Shoot)
"Time to Press Key" に0.2秒を設定。
この状態で弾が発射されるタイミングを検証してみると
右クリックを押してから0.2秒以内に左クリックを入力しないとトリガーされませんでした。
もう一つ検証します。
Combo の検証3
先程とほぼ同じですが、Combo Actions[1] の "Time to Press Key" に0秒を設定しました。
この状態で弾が発射されるのか確認しましたがトリガーされませんでした。
右クリックを押してから0秒以内に左クリックを入力しないといけないので、実質入力不可能ということになるでしょうか。
Combo Actions[0] の"Time to Press Key" に0秒を設定しても特に影響はなかったので、ここの値は気にしなくていいのかな...?という結果になりました。
長くなりましたが Enhanced Input に利用されている Triggers の挙動を自分なりにメモしたものを公開してみました。