MagicLeap2 コントローラ入力の情報まとめ
MagicLeap2 コントローラ入力サンプル - TechnicalProtein
↑の記事で触ったController Input Event についての追加情報、ここで紹介されている以外のボタン入力とかはこちらの記事に書いてます
SDK 0.53.3 現在の情報
UnityのInputSystemを利用してMagicLeap2のコントローラの入力をトリガーする方法のおさらい
using UnityEngine; using UnityEngine.InputSystem; namespace Sandbox.Controller { /// <summary> /// コントローラ入力サンプル. /// </summary> public class ControllerInputSample : MonoBehaviour { private MagicLeapInputs _mlInputs; private MagicLeapInputs.ControllerActions _controllerActions; private void Start() { // 新しいインスタンスを作成し、起動. _mlInputs = new MagicLeapInputs(); _mlInputs.Enable(); // 各入力のイベントハンドラを登録. _controllerActions = new MagicLeapInputs.ControllerActions(_mlInputs); _controllerActions.Bumper.started += HandleOnBumperStarted; _controllerActions.Bumper.performed += HandleOnBumperPerformed; _controllerActions.Bumper.canceled += HandleOnBumperCanceled; } private void OnDestroy() { // 登録していたハンドラを削除. _controllerActions.Bumper.started -= HandleOnBumperStarted; _controllerActions.Bumper.performed -= HandleOnBumperPerformed; _controllerActions.Bumper.canceled -= HandleOnBumperCanceled; // 入力の購読を終了. _mlInputs.Dispose(); } private void HandleOnBumperStarted(InputAction.CallbackContext obj) { Debug.Log("The Bumper is started."); } private void HandleOnBumperPerformed(InputAction.CallbackContext obj) { Debug.Log($"The Bumper is performed."); } private void HandleOnBumperCanceled(InputAction.CallbackContext obj) { Debug.Log($"The Bumper is canceled."); } } }
手順としては
MagicLeapInputs 、フィールド名 _mlInputs
_mlInputs.Enable() で起動
MagicLeapInputs.ControllerActions、フィールド名 controllerActions のインスタンスを作成時に mlInputs を渡し、関連付けを行う
InputAction.CallbackContext を引数にとるイベントハンドラを作成
取得したい入力のイベントに登録 ( 今回は Bumper ボタン )
購読の用がなくなったら 登録したイベントを削除し、_mlInputs.Dispose() で入力の購読を終了する
購読するイベントタイプ
イベントタイプ | 解説 |
---|---|
InputAction.started | 入力の開始時に呼び出される |
InputAction.performed | 入力されている間呼び出される |
InputAction.canceled | 入力が終了時に呼び出される |
まとめ
簡単にだが MagicLeap SDK の API を利用したコントローラ入力をまとめた
一応公式APIの入力をそのまま使う以外にMRTKを利用した入力も今度書こうと思う