Oculus Quest で右手左手で銃を丁度いい位置で持つ方法


この記事の目的

OculusQuest購入1週間。簡単な射的ゲーム的な物を作ろうとしたところ、両手それぞれの手で銃を持つ位置の調整で、かなりつまづいたので記事を書きます。Quest関連の記事は本当に少なくて誰かの参考になれば幸いです。

最初に両手を画面に出す設定が必要

OculusuQuestでは、初期設定では何故か画面上に片手しか登場しません。そこで最初に

OVRCameraRig にアタッチされている OVR Manager の Target Devices の “Gear Vr Or Go” を “Quest” に変更する
以下のメニュー操作で Asset/Plugins/Android/AndroidManifest.xml を作る
Oculus > Tools > Remove AndroidManifest.xml
Oculus > Tools > Create store-compatible AndroidManifest.xml

上記の設定をしたのちにさらにAndroidManifest.xml Scriptの中の

<category android:name="android.intent.category.INFO"/>

のところを

<category android:name="android.intent.category.LAUNCHER"/>

と変更する操作が必要です。

次につまづいたところ

Playerを動きまわらせるようにしたかったので、HierarchyにOVRPlayerControllerを配置。
以下のようにOVRPlayerController以下のLeft(Right)HandAnchorと同じ階層にOVRControllerPrefabを配置して、万事OK!

っと行きたいところでしたが、この方法では上手く行きませんでした。
色々階層を変えてみたりしましたが、ダメでした。最終的に上手く入ったのは、

上記のようにOVRPlayerController と同じ階層にDistanceGrabHandRight(Left)を置く方法でした。

銃を適切な位置に掴ませる為に

https://raspberly.hateblo.jp/entry/OculusQuestSnapOffset
上記ブログを参考にさせていただいたのですが、記事中では銃にAttachされたDistance Grabbable(script) の”'Snap Offset'はNullにして、Snap Position, Snap Orientationにチェックを入れる。銃を持つ位置の調整は、銃のmodelの位置を調整するよう" にあったのですが、その方法だとどうしても銃の弾が出る位置がおかしな位置へずれてしまい、最終的に僕はこの方法は採用しませんでした。
代わりに僕がやったのは
·Hierarchyの原点(0、0、0)の位置の空のGameObject(snapOff)を配置。その状態で銃にAttachされたScriptにsnapOff(GameObject)をセット。 
·それでBuildをしてみて、銃の位置のずれをSnapOffの値を調整することで直していく
方法です。

左手にも適切な位置に持たせる!

最後に最も時間がかかったところですが、右手で上記操作で適切な位置に調整しても、左手に持ち替えた時に明らかにおかしな位置で持ってしまうという問題です。
最終的に
https://www.youtube.com/watch?v=98gfkursxYI&list=PLrk7hDwk64-Y7ELKfkw8ox8TaT9y3gNpS&index=3
の5分30秒〜を参考にしつつ、DistanceGrabHandRight(Left)にAttachされているDistanceGrabber.cs scriptを書き換えてください。

後は、右手の時と同様にsnipOffの値を調整し適切な位置を見つけてください。
以下は僕が最終的に何とかたどり着いた画像です。

まだ少し持つ位置おかしいですが、これで一旦よしとします。
(Macだと毎回毎回QuestにBuildしてDebugが必要で、大変です。誰かいい方法あれば教えてください)