MRが楽しい

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

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その11(コントローラのボタンの長押しを検知する)

本日は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]で押下中の経過時間を計測することで長押しを検知できます。