XR Socket Interactor を用いて VR 物体を以前の位置に戻す【XR Interaction Toolkit】

XR Interaction Toolkit の Socket Interactor を使ってみた記事.

XR Interaction Toolkit

Unity側が提供するXRパッケージです.
XR Interaction Toolkit の記事は昨年の8月以来.

xrdnk.hateblo.jp

最新版のバージョンを見ると,1.0.0-pre.1,0.10.0-pre.7 まで出てました.

以降の説明では1.0.0-pre.1を用いて説明します.

XR Socket Interactor

物体を以前の位置に戻すことの出来る機能です.下のような感じ.

gyazo.com

環境

  • 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 を設定します.

これで準備は完了です.実機確認します.

実機確認

youtu.be

無事に Socket Interactor が動きました.
Socket の判定範囲に入ると Cube オブジェクトの緑マテリアルが表示されるようになります.
また,Socket 判定範囲に入れば,以前の位置にすぽっと置かれるようになります.