EnhancedInput で同時押しを実現する
Enhanced Input プラグインを使って同時押し(例えば Shift + マウス左クリック)を実現したいと思ったので、やり方を調べた時のメモです。
Enhanced Input プラグインについて
ユーザー入力のためのプラグインで UE 4.26 から使用可能(なはず)です。この記事を記載時はまだ実験的な機能です。 使い方については詳細を省きます。
同時押しについて
今回の記事で説明する同時押しは Shift + マウス左クリックです。より具体的には Shift を押下中にマウス左クリックで Input Action をトリガーすることを目指します。
同時押しの実現方法
ユーザー入力を受け付けるために Input Action を Input Mapping Context に登録していきます。Input Action に割り当てる入力は複数設定できます。設定したいずれかの入力が行われると Input Action がトリガーされるようなイメージです。
ですので、単純な設定では同時押しが実現できないと思います。
同時押しを実現するためには Triggers の設定値 Chorded Action
を使用します。
Chorded Action
は Input Action をトリガーするためには、他の Input Action がトリガーされていることを条件とするという設定になります(Input Action 1 をトリガーするには Input Action 2 がトリガーされていないといけないといった設定が可能)。
今回の Shift + マウス左クリックの場合 Chorded Action
を使用し、マウス左クリックに対応する Input Action をトリガーするには Shift に対応する Input Action がトリガーされていないといけない、というような設定を行います。
上記の設定を行なったのが下図になります。
下図では、マウス左クリックに対応する Input Action は IA_StrongRightHandedAttack
Shift に対応する Input Action は IA_Modifier
としています。
IA_StrongRightHandedAttack
の設定で Chorded Action
を設定し IA_StrongRightHandedAttack
をトリガーするには IA_Modifier
がトリガーされていることを条件として設定してます。すなわち IA_StrongRightHandedAttack
をトリガーするには IA_Modifier
に対応する入力 Shift が押下されていること(Hold)が条件となります。
IA_StrongRightHandedAttack
の Triggers には Pressed
も設定していますが、これがないと Shift を押下中ずっと IA_StrongRightHandedAttack
がトリガーされてしまうためです。今回はトリガーされるのは1度にしたかったので Pressed
を設定しています。
※ 各 Input Action アセットの Triggers は設定しておらず Input Mapping Context 内でのみ Triggers を設定しています。
上記のような設定を行うと Enhanced Input プラグインにて同時押しを実現できるかと思います。
以上になります。
ここまで読んでいただき、ありがとうございます。