Unity之OpenXR+XR Interaction Toolkit实现 抓取物体

前言

我们今天来说一下如何使用XR Interaction Toolkit来实现和3D物体的交互之:抓取,简单说就是通过VR手柄拿起来一个物体。

二.准备工作

我们需要准备好Unity工程和环境配置
有了前文:Unity之OpenXR+XR Interaction Toolkit基本配置的介绍,我们就不在详细说明这些了,大家自行复习。

流程简述:
我们新建一个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了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq563129582/article/details/130355633
今日推荐