本日はMetaQuest3の技術調査枠です。
MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。
本記事はコントローラのボタンの長押しを検知する方法です。
前提条件
以下の記事で作成した Unity プロジェクトを基に設定を行います。
bluebirdofoz.hatenablog.com
コントローラのボタンの長押しを検知する
Quest3のそれぞれAボタンとXボタンのボタン押下を検知するため、新たに2つのDigital値のアクションを追加します。
右手コントローラのアクションを設定する
Controllerの設定項目から右手コントローラ(OculusTouchRightHandController)を開き、AボタンのButton.Three Pressに作成したアクションを設定します。
左手コントローラのアクションを設定する
Controllerの設定項目から左手コントローラ(OculusTouchLeftHandController)を開き、XボタンのButton.Three Pressに作成したアクションを設定します。
押下開始時と終了時のイベントを設定する
適当なゲームオブジェクトに2つのInputActionHandlerコンポーネントを追加します。
常にボタンのイベントを検知できるように[IsFocusRequired]のチェックを外し、[InputAction]にそれぞれ作成したアクションを指定します。
これで[OnInputActionStarted]にボタン押下開始時のイベント、[OnInputActionEnded]にボタン押下終了時のイベントを設定できます。
ビルドと動作確認
以下の記事を参考にプロジェクトのビルドとQuest3へのデプロイを実行してください。
bluebirdofoz.hatenablog.com
MetaQuest3でデプロイしたアプリを起動し、左手コントローラのXボタンを押します。
押下と同時に[OnInputActionStarted]に指定したイベントが発生しています。
更にXボタンから手を放して押下を止めたタイミングで[OnInputActionEnded]のイベントが発生します。
[OnInputActionStarted]と[OnInputActionEnded]で押下中の経過時間を計測することで長押しを検知できます。