UnityのInputSystemは、従来のInputクラスに比べて柔軟に操作入力を管理できる反面、設定方法が少し複雑に感じることがあります。特にAndroidで2本指タップや画面左右同時タップのようなマルチタッチを扱う場合、ActionsとBindingsの設定がポイントです。この記事では具体例を交えて解説します。
InputSystemの基本構造
InputSystemでは、まず「Input Actions」を作成し、各アクションに対して入力を「Binding」します。アクションはユーザーが行う操作の抽象的な定義で、Bindingはその操作を検出するための入力設定です。
例えば、「Jump」というアクションに対してスペースキーや画面タップをBindingするイメージです。
2つの指でタップを検出する方法
複数指でタップする場合、アクションタイプを「Value」にしてControl Typeを「Vector2」に設定します。Bindingでは、Touchscreen/PrimaryTouchを選択します。
スクリプト側でInputAction.ReadValue<Vector2>()を使い、指の数をTouchscreen.current.touches.Countで確認すると、2本指タップを検出可能です。
画面の左右同時タップの設定
左右同時タップは、画面の座標を判定して左右領域に属するかを確認します。BindingはTouchscreen/PrimaryTouchを使用し、スクリプト側でtouch.position.xをチェックします。
スクリプト例:if(touches.Count >= 2 && touches[0].position.x < Screen.width/2 && touches[1].position.x > Screen.width/2){ /* 左右同時タップ処理 */ }
ActionsとBindingsのポイント
マルチタッチは基本的にスクリプト側で制御することが多いです。Actionsで抽象的な操作を定義し、Bindingsで基本的なタッチを設定、指の数や位置はスクリプトで判定します。
これにより、複雑なタップやスワイプ操作も柔軟に扱うことができます。
まとめ
Unity InputSystemでAndroid向けの2本指タップや左右同時タップを扱うには、Actionsで操作を定義し、Bindingsで基本のタッチ入力を設定、スクリプトで指の数や位置を判定する方法が効率的です。設定とスクリプトを組み合わせることで、マルチタッチ操作を正確に検出できます。


コメント