XREAL Air 2 Ultra × Unity 6 で左右独立した Hand Menu を実装する
はじめに
こちらの記事:XREAL Air 2 Ultra:Hand Menu を使ってみる では、1つのハンドメニューを左右の手(Either)で共有する基本セットアップを解説しました。
今回はその応用として、「左手には録画機能、右手には認証機能」といったように、左右の腕にそれぞれ別の役割を割り当てる「Dual Hand Menu」の構築手順をまとめます。
動作確認環境
- Unity: 6000.0.70f1
- XREAL SDK: 3.1.0
- XR Interaction Toolkit: 3.0.10
- Device: XREAL Air 2 Ultra + Beam Pro
1. Either から Left/Right へ
デフォルトの ButtonHandMenu プレハブは、Menu Handedness が Either(どちらか一方) に設定されています。これを、左右それぞれ独立したコンポーネントとして構成することで、2つのメニューを同時に(あるいは左右別々に)管理することを可能にします。
| 実装内容 | 左手 (Left) | 右手 (Right) |
|---|---|---|
| 機能 | 録画開始ボタン | 認証開始ボタン |
| 表示パネル | Capture パネル(録画・スクショ) | Password パネル(空間キーボード) |
| Handedness設定 | Left |
Right |
2. セットアップ手順
オブジェクトの複製と階層構造
ButtonHandMenu プレハブ内にある主要な要素をコピーして、左右に振り分けます。
-
Wrist Buttonの複製
-
Hand Menu Wrist Buttonを2つ用意し、それぞれ名前をLeft Hand Menu WristButton/Right Hand Menu WristButtonとします
-
-
ScrollView(表示パネル)の複製
-
Hand Menu ScrollViewも同様に2つ用意し、名前をLeft Hand Menu ScrollView/Right Hand Menu ScrollViewとします
-
HandMenu スクリプトの設定
それぞれのオブジェクトにアタッチされている HandMenu スクリプトの Menu Handedness を変更します。
-
左手用セット(Scroll View/Button):
Menu HandednessをLeftに設定 -
右手用セット(Scroll View/Button):
Menu HandednessをRightに設定
コンテンツの配置
それぞれの Follow GameObject 直下に、今回割り当てたい機能を配置します。
-
左手 (
Left Hand Menu ScrollView):Follow GameObjectの下に Capture パネル を配置 -
右手 (
Right Hand Menu ScrollView):Follow GameObjectの下に Password パネル を配置
3. 実装のポイント:なぜ分けるのか?
HandMenu.cs の内部ロジックでは、手のひらの向きや視線を常に計算しています。
これらを独立させることで、「左手で録画を回しながら、右手でパスワードを入力する」といった並行操作が可能になります。
4. 実際に動かしてみた感想
利便性
手首に追従してくれるため、場所を問わずメニューを開けるのは非常に重宝します。左右に役割を分けたことで、「録画は左、認証は右」と直感的に操作を切り替えられるようになりました。
安定した操作感
2つの機能を同時に扱っても、手の動きに対する追従も、指先での押し込み(Poke)操作も、違和感なくスムーズに行えます。
