前言
我们今天来说一下如何使用XR Interaction Toolkit来实现和3D物体的交互之:抓取,简单说就是通过VR手柄拿起来一个物体。
二.准备工作
有了前两篇的配置介绍,我们就不在详细说明这些了,大家自行复习
Unity之OpenXR+XR Interaction Toolkit接入Pico VR一体机
Unity之OpenXR+XR Interaction Toolkit接入HTC Vive
我们新建一个3D(URP)工程
然后通过PackageManager安装XR Interaction ToolKit插件。
配置好XR Interaction Toolkit的Preset
新建一个3D场景
准备工作完毕
配置3D物体
1.我们随便创建一个3D的球体
2.给他添加XR组件:XR Grab Interactable。添加完毕后,球体会自动添加Collider和Rigidbody。
其他参数暂时不用设置
射线抓取
其实默认XR Origin 创建完毕后,手柄的Controller设置应该是XR Ray Interactor组件,即射线交互组件,这允许我们通过射线和物体进行交互,当然也可以射线远程抓取。
XR Ray Interactor有一个选项 Force Grab,它默认是勾选的。如果勾选,我们通过射线抓取到物体后,物体会迅速到收的Attach位置。如果不勾选,我们通过射线抓取后,物体会和手保持抓取是的相对距离。
设置完上面步骤后,即可运行测试 射线远距离抓取。
手接触抓取
如果我们想通过手部接触的直接抓取物体,而不是通过射线远距离抓取物体,那么我们就不使用XRRay Interactor了,而是使用XR Direct Interactor组件。我们来演示一下如何给右手实现接触抓取功能。
1.我们点击RightHandController,删除上面的所有组件
2.右键点击RightHandController,创建XR->Director Interactor(action-based)节点。
设置完上面步骤后,即可运行测试 手接触抓取。
XR Interactor Group
我们除了单独使用Ray Interactor和Direct Interactor组件外,还有一种可能就是,同时使用二者或者切换使用。那么我么就要使用到XR Interactor Group组件了,下面演示右手如何设置。
1.点击RightHand Controller,删除掉所有的组件。
2.右键点击RighHand Controller,添加 Ray Interactor和Direct Interactor两个子组件。
3.点击RightHand Controller ,添加XR Interactor Group组件,然后添加两个字子节点Direct Interactor和Ray Interactor组件作为Starting Group Members属性。接下来就可以通过XR Interactor Group来控制多个不同的Interactor了。