
Magic Leap2 の コントローラ シンプルな実装方法
はじめに
この記事は、Magic Leap2 Advent Calendar 2022 の22日目です。
Magic Leap2 コントローラ のシンプルな実装方法について説明します。
OnePlanet XR について

このブログ記事は OnePlanet XR によるものです。
OnePlanet XR は、AR/MR/VPS技術に専門特化したコンサルティングサービスです。豊富な実績を元に、AR/MR技術を活用した新たな事業の立ち上げ支援や、社内業務のデジタル化/DX推進など、貴社の必要とするイノベーションを実現いたします。
ご相談から受け付けております。ご興味ございましたらお問い合わせください。
Magic Leap2 の コントローラ
コントローラの位置、回転、各種ボタンの情報を取得するデモアプリケーションを作成します。
Magic Leap 2 の コントローラで入力した情報を表示するだけのデモ動画 #LEAPERSJAPAN pic.twitter.com/43Fxnb437j
— Sadao Tokuyama (@tokufxug) December 18, 2022
開発環境 / 動作環境
Unity Editor 2022.2.0b8.3023
Magic Leap SDK 1.1.0-dev2
Magic Leap Unity Package 1.2.0
Magic Leap XR Plugin 7.0.0.pre.1
Magic Leap2 OS 1.1.0-dev2 (B3E.221117.04-R.028)
ヒエラルキー
Controller Example
シーンを新規作成します。Main Cameraは削除し、XR Rigのプレファブをヒエラルキーに配置します。
Game Objectを作成し、名前を Controller Example にします。
ControllerExample
Controller Example の Game Object にアタッチするControllerExampleというスクリプトを作成します。
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.XR.MagicLeap;
using TMPro;
public class ControllerExample : MonoBehaviour
{
private MagicLeapInputs _mlInputs;
private MagicLeapInputs.ControllerActions _controllerActions;
[SerializeField]
private TextMeshProUGUI info;
void Start()
{
_mlInputs = new MagicLeapInputs();
_mlInputs.Enable();
_controllerActions = new MagicLeapInputs.ControllerActions(_mlInputs);
}
private void Update()
{
if (_controllerActions.IsTracked.IsPressed())
{
info.text = "";
info.text+="Position: " + _controllerActions.Position.ReadValue<Vector3>() + "\n";
info.text+= "Rotation: " + _controllerActions.Rotation.ReadValue<Quaternion>() + "\n";
info.text+= "Trigger: " + _controllerActions.Trigger.ReadValue<float>() + "\n";
info.text += "Bumper: " + _controllerActions.Bumper.IsPressed() + "\n";
info.text+= "Menu: " + _controllerActions.Menu.IsPressed() + "\n";
info.text+= "Touchpad Position: " + _controllerActions.TouchpadPosition.ReadValue<Vector2>() + "\n";
info.text+= "Touchpad Press: " + _controllerActions.TouchpadTouch.IsPressed() + "\n";
info.text+= "Touchpad Force: " + _controllerActions.TouchpadForce.ReadValue<float>() + "\n";
}
}
private void OnDestroy()
{
_mlInputs.Dispose();
}
}
ControllerActionsからコントローラの入力情報を取得します。
Updateのの冒頭でIsTracked.IsPressed()でコントローラの接続状態のチェックを行い、trueであれば入力情報をテキストに設定します。
コントローラ入力情報をテキストに表示
コントローラの入力情報を表示するUIを作成します。以下の記事に従って構築してください。
フィールド設定

コントローラ入力情報を表示するText (TMP)をController Exampleに設定します。
実行
Magic Leap 2 の コントローラで入力した情報を表示するだけのデモ動画 #LEAPERSJAPAN pic.twitter.com/43Fxnb437j
— Sadao Tokuyama (@tokufxug) December 18, 2022
動画はコントローラの位置と回転、トリガーとバンパー、タッチパッド(位置とボタンの押している強さ。)のみ表示していますが、今回、作成しているExampleではメニューとタッチパッドの押下判定も追加しています。
OnePlanet XR

AR/MR/VPS技術に専門特化したコンサルティングサービス
Magic Leap2 を使ったソリューションのご検討の方からのお問い合わせ、お待ちしております。
お問い合わせ先
https://1planet.co.jp/xrconsulting.html#op_form
OnePlanet Tech Magazine
Magic Leap1 、Magic Leap2、スマホAR(Niantic Lightship ARDK、WebAR、VPSなど)といったAR技術全般をブログマガジンを連載しています。