この記事では、InputSystemの入力処理を実装していく上で重要なInteractionsの設定について解説していきます。
前提となる基本的な導入方法やAction Type、フェーズについての基礎知識は以下の記事にまとめていますので、ぜひご確認ください。
InteractionsとAction Type
InteractionsとAction Typeは、それぞれ以下のような設定を行うものです。
- Action Type:ボタンやアナログスティック、トリガーボタンといった入力種別に関する設定
- Interactions:長押し、複数同時押しなど、通常の入力に加えて、その入力の仕方に関する設定
どちらの設定も、前回触れたフェーズの遷移条件を変更するので、その優先度は
[Interactions>Action Type]*となります。
*つまり、Action Typeの設定が有効であるためにはInteractionsが設定されていない状態である必要があるということになります。
Interactionsの設定方法
Interactionsは、Action Properties下部のInteractionsで[+]アイコンをクリックすることで追加設定が可能です。
Binding Propertiesにも同様にInteractions設定欄があり、バインド設定ごとに別の設定を行うことも可能となっています。
Interactionsの種類
Interactionsには、以下の種類があります。
基本的な考え方は、「ある条件を満たしたときにPerformedフェーズへ遷移する」ということです。
Hold:一定時間以上の入力(長押し)
一定時間以上ボタンを押下したときにPerformedフェーズへ遷移する設定です。
Multi Tap:連打入力
マルチタップ(連打)操作時に検地を行う設定です。各設定項目は以下の通りです。
- Tap Count:連打検知回数。この規定値を超えたときにPerformedフェーズへ遷移。
- Max Tap Spacing:連打判定を行う最大許容時間。
- Max Tap Duration:連打として判定する入力受付時間間隔の設定。
Press:ボタン押下/解放判定
ボタンの押下、もしくは解放時にPerformedフェーズへ遷移する設定です。
Trigger Behaviorで、どのタイミングで適用するかを変更できます。
- Press Only:ボタン押下時のみ、Performedフェーズへ遷移
- Release Only:ボタン解放時のみ、Performedフェーズへ遷移
- Press And Release:ボタン押下時と解放時の両方で、Performedフェーズへ遷移
Slow Tap:スロー入力
ゆっくりとした入力操作を判定する設定です。
Min Tap Durationで、入力の最小時間を設定できます。
Tap:短押し入力
短押し操作(=押してすぐ離す)を判定する設定です。
Max Tap Durationで、短押しとして認識する受付時間を設定できます。
複数Interactions設定と種別ごとの判定
複数のInteractions設定を設定した場合は、各設定が同時に判定され、Performedフェーズへの遷移がそれぞれ発生することになります。
同アクション内でのコールバック発生時に、各Interactions設定を判定するには以下の構文を用います。
if(context.interaction is XXXXInteraction) //XXXXの箇所にInteracrions名を入力
例:Hold Interacrionsを判定したい場合
if(context.interaction is HoldInteraction)
参考サイト
公式マニュアル:
コメント