MRが楽しい

MRやVRについて学習したことを書き残す

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その12(ボタンを押したコントローラにメニューを追従させる)

本日はMetaQuest3の技術調査枠です。
MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。
本記事はボタンを押したコントローラにメニューを追従させる方法です。

前提条件

以下の記事で作成したサンプルスクリプトとUnityプロジェクトの設定を組み合わせてボタンを押したコントローラにメニューを追従させるようにしてみました。
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com

コントローラのボタンの長押しを検知する

MRTKの入力イベントを使ってコントローラを直接追従するサンプルスクリプトを以下の通り改修しました
・MRTKMotionControllerSolverHandler.cs

ボタン押下開始時と終了時のイベントを設定する

適当なゲームオブジェクトに2つのInputActionHandlerコンポーネントを追加します。

常にボタンのイベントを検知できるように[IsFocusRequired]のチェックを外し、[InputAction]にそれぞれ右手と左手のアクションを指定します。

[OnInputActionStarted]と[OnInputActionEnded]イベントにボタン押下開始と終了時のイベントとしてサンプルスクリプトのSwitch~関数を登録し、右手と左手の追跡設定を変更します。

ビルドと動作確認

以下の記事を参考にプロジェクトのビルドとQuest3へのデプロイを実行してください。
bluebirdofoz.hatenablog.com

MetaQuest3でデプロイしたアプリを起動し、左手のコントローラのXボタンを押します。
メニューの左手の追従設定が有効になり、ボタン押下中は左手のコントローラにメニューが追従します。

同じように右手のコントローラのAボタンを押すと、右手のコントローラにメニューが追従します。