のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

GearVRコントローラーをUnityで使う

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コントローラーのモデルを表示する


GearVRのコントローラーを表示させたい場合

LeftHandAnchorにAssets/OVR/Prefabs/GearVrControllerを配置して、OVRGearVRControllerのControllerの項目をLTrackedRemoteに変更

右手の方も同様にRightHandAnchorにAssets/OVR/Prefabs/GearVrControllerを配置して、OVRGearVRControllerのControllerの項目をRTrackedRemoteに変更する

Hierarchyはこんな感じに

※ 他のモデルを利用する場合は他のモデルを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して反転させている。