本日は技術調査枠です。
Oculus Goアプリでコントローラ操作のイベントを取得する方法について調べました。
前提条件
Oculus Go向けのUnityプロジェクトを作成し、Oculus Integrationをインストールしていることが前提となります。
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com
コントローラ利用のサンプルシーン
Oculus Integrationをインストールした直後の状態であれば、サンプルシーンが利用できます。
Assets/Oculus/VR/Scenes 配下にある GearVRControllerTest.unity シーンを開いてビルドします。
サンプルシーンを起動すると以下のようなテキスト欄が表示されます。
コントローラから取得できる情報(回転やトリガーイベント)がリアルタイムで更新されます。
コントローラの情報取得に関するコードは Assets/Oculus/VR/Scripts/Util 配下の OVRGearVrControllerTest.cs にあります。
公式のドキュメントは以下になります。合わせて確認すればコントローラ操作に関する一通りの実装ができます。
・OVRInput
https://developer.oculus.com/documentation/unity/latest/concepts/unity-ovrinput/
トリガーイベントの取得
既存のシーンにコントローラのトリガーイベントを追加する場合についてです。
サンプルとして以下のようなトリガーイベントに合わせてオブジェクトを回転するスクリプトを作成しました。
・TriggerManager.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TriggerManager : MonoBehaviour { // Use this for initialization void Start() { } // Update is called once per frame void Update() { if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger)) { Debug.Log("Trigger"); ChangeRotate(); } } void ChangeRotate() { float YAngle = transform.localEulerAngles.y; transform.localEulerAngles = new Vector3(0.0f, YAngle + 30.0f, 0.0f); } }
OculusGo向けのビルド設定のみを行った初期シーンにCubeオブジェクトを追加し、本スクリプトをアタッチします。
このままビルドしてもコントローラの情報を取得する設定が行われていないため、トリガーイベントを取得できません。
まず、Assets/Oculus/VR/Prefabs 配下にある OVRCameraRig.prefab を Hierarchy にドラッグします。
OVRCameraRig はカメラを含むので、既存の MainCamera オブジェクトは削除するか無効化しておきます。
この OVRCameraRig を追加したプロジェクトであれば、上記の OVRInput によるイベント取得が可能になります。
プロジェクトをビルドし、コントローラのトリガーを引くと Cube が回転します。