XR Socket Interactor を用いて VR 物体を以前の位置に戻す【XR Interaction Toolkit】
XR Interaction Toolkit の Socket Interactor を使ってみた記事.
XR Interaction Toolkit
Unity側が提供するXRパッケージです. XR Interaction Toolkit の記事は昨年の8月以来.
最新版のバージョンを見ると,1.0.0-pre.1,0.10.0-pre.7 まで出てました.
以降の説明では1.0.0-pre.1を用いて説明します.
XR Socket Interactor
物体を以前の位置に戻すことの出来る機能です.下のような感じ.
環境
- Unity 2019.4.17f1
- URP 7.5.2
- XR Interaction Toolkit 1.0.0-pre.1
準備
適当に Room-Scale XRRig (Device-Based),XR Interaction Manager,床,台,掴む物を用意します.
実装
掴む物に Collider,Rigidbody,XR Grab Interactable をアタッチします. XR Grab Interactable をアタッチすることで,このオブジェクトは掴める物体となります. また,掴む物にレイヤーを定義しましょう.私はGrabbableItemとしました. Interaction Layer Mask を GrabbableItem に変更します.
Controller にある XR Ray Interactor も同様に Interaction Layer Mask を GrabbableItem にします. これにより,Iteractable オブジェクトの中で GrabbableItem の Layer の物だけが掴めるようになります.
空オブジェクトを生成し,SocketInteractor と名付けます. 判定用に Sphere Collider をアタッチし,Is Trigger に チェックをします. Collider の範囲は Socket の判定に入るような広さにします.
そして,XR Socket Interactor もアタッチします. Interaction Layer Mask を Grabbable,Starting Selected Interactable には Cube を設定します. Socket / Show Interactable Hover Meshes にはチェックを付けて, Socket Interactor の機能がわかりやすいように Interactable Hover Mesh Material に適当な Material を設定します.
これで準備は完了です.実機確認します.
実機確認
無事に Socket Interactor が動きました. Socket の判定範囲に入ると Cube オブジェクトの緑マテリアルが表示されるようになります. また,Socket 判定範囲に入れば,以前の位置にすぽっと置かれるようになります.