Meta XR ToolsでCubeを掴めるようになるまで
掴む側であるコントローラーと掴まれる側のオブジェクトのそれぞれの設定が必要。
ハンドジェスチャーでつかむのか、コントローラーでつかむのかで使うPrefabが違うっぽい。自分はコントローラーでつかむ想定。
前準備
Meta XR Interaction SDKをインポートする
Meta XR All-in-One SDKってやつが楽そう?
自分はよくわかってなくてMeta XR Interaction SDKとMeta XR Interaction SDK Essentialsをそれぞれ入れた
Meta XR Core SDK/Prefabs/OVRPlayerControllerprefabををヒエラルキービューへ
これでVR上でのカメラとコントローラーによる最低限の操作ができる
MainCameraは不要なので消す
ワールドの床にあたり判定がないと無限に落ち続けてしまうので注意(1敗)
掴む側(コントローラー)
ヒエラルキービューOVRPlayerController/OVRCameraRig配下にMeta XR Interaction SDK/Runtime/Prefabs/OVRInteraction prefabを配置
OVRInteraction配下にMeta XR Interaction SDK/Runtime/Prefabs/OVRControllersprefabを配置
ハンドジェスチャーでインタラクトしたかったら、OVRHands prefabを代わりに配置する(多分)
OVRControllers配下のLeftControllerとRightControllerのControllerInteractors配下にMeta XR Interaction SDK Essentials/Runtime/Prefabs/Grab/ControllerGrabInteractorprefabをそれぞれ配置
最終的に↓みたいな配置になる
https://scrapbox.io/files/684c4bea837a3c0b54bcfffb.png
掴まれる側
QuickActionsと呼ばれるインタラクションの追加を自動でやってくれるやつがあるので、それを使うと簡単
インタラクションさせたいGameObjectを右クリック→Interaction SDK→Add Grab Interaction
Grab Wizardが表示されたらFix Allを押すと足りないコンポーネントとかを設定してくれる
Createボタンの押下も忘れず
当たり判定の調整
上の状態だとオブジェクトを掴んだ瞬間、自分が後ろに動いて行ってしまう
オブジェクトと自分の当たり判定が衝突し、反発力で下がってしまうらしい
OVRPlayerControllerと掴まれるオブジェクトにLayerを設定し、当たり判定を無効化する
OVRPlayerControllerインスペクタービュー→Layer→Add LayerからLayer(例:Player)を追加・設定
子要素も変えますか?みたいに聞かれるのはNo
掴まれるオブジェクトに対しても同じようにレイヤーを追加・設定する(例:Item)
Project SettingsのPhysicsの設定からLayer Collision Matrixを開き、PlayerとItemが交差する部分のチェックを外して無効化する
https://scrapbox.io/files/684c4e6839ab22a000d61cdb.png