GearVRコントローラーを使う方法についてメモです。
GearVRコントローラーがついに日本で発売となり、そのGearVRコントローラーに対応した「ZOMBIE ELEVATOR」が発売されました!
リアル系なゾンビシューティングゲームです。是非やってみてください。
OculusStoreリンクはこちら
【本題】GearVRコントローラーをUnityで使う
1. GearVR用にプロジェクト設定をしておく
PlayerSettingsでPlatformがAndroidになっていることを確認するなど、色々設定項目を確認。
今回は説明をスキップします。
2. OculusUtilities.unitypackageをダウンロード
OculusのサイトからSDKをダウンロードしてくる
https://developer.oculus.com/downloads/package/oculus-utilities-for-unity-5/
3. OculusUtilities.unitypackageをインポートする
ダウンロードしたファイルを解凍し、対象のプロジェクトにインポートする
4. OVRCameraRigを配置
既存のメインカメラを削除し、
Assets/OVR/Prefabs/OVRCameraRigをシーンに配置
これだけでLeftHandAnchor、RightHandAnchorのGameObjectにコントローラーの動きがトラッキングされるようになる
5. GearVRコントローラーのモデルを表示する
LeftHandAnchorにAssets/OVR/Prefabs/GearVrControllerを配置して、OVRGearVRControllerのControllerの項目をLTrackedRemoteに変更
右手の方も同様にRightHandAnchorにAssets/OVR/Prefabs/GearVrControllerを配置して、OVRGearVRControllerのControllerの項目をRTrackedRemoteに変更する
※ 他のモデルを利用する場合は他のモデルをHandAnchorの子供に入れたり、HandAnchorの位置をスクリプトで追従させるなどで対応できる
6. 入力周りのコード
Assets/OVR/Scenes/GearVrControllerTestのシーンを見るとデモシーンが見れる
デモシーンのOVRGearVrControllerTest.csでは様々な数値の取得していることが確認できる
・単純なクリックだけであればFire1等で取得することも可能
・OVRInputからOculusRiftと同じような形で入力を受け取ることが可能
// 右利き用のコントローラーが接続されているか OVRInput.IsControllerConnected(OVRInput.Controller.RTrackedRemote); // トリガーの取得 OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger);
・コントローラーを検知して分岐処理を入れたりも
// コントローラーの検知 var controller = OVRInput.GetActiveController(); if(controller == OVRInput.Controller.LTrackedRemote) { // 左利き処理 } else if(controller == OVRInput.Controller.RTrackedRemote) { // 右利き処理 } else { // コントローラーが接続されていない場合の処理 }
7. デバッグについて
OculusRift+OculusTouchでUnityEditor上での動作確認ができる
GearVRの実機で見るのが一番だが、通常の確認はOculusRift+OculusTouchでOK
8. GearVRコントローラーが使える
すごい便利。Gaze卒業!
GearVRコントローラーを利用したアプリを作る上で気をつけたいことメモ
・GearVR含め、コントローラーはポジショントラッキングはしていないので、歩き回るようなコンテンツは作れない。
・360度回転するようなコンテンツは、コントローラーのトラッキングがずれていく。ゾンビエレベーターも真後ろは出現しないようにしている。
・コントローラーを全員が持っている訳ではない。まだまだ持ってないGearVRユーザーが多いので、コントローラーがない場合の対応も入れたほうがいい。
・コントローラーは2つ同時に接続できない。
・右利き、左利きの場合の見え方を検討しないといけない。右手のモデルが標準のゾンビエレベーターでは、左利きの場合は手のスケールを-1して反転させている。