[转]XR Interaction Toolkit教程⭐三、实现抓取和交互功能


🟥 实现射线抓取功能

  • 物体添加 XRGrabInteractable 组件即可。

现在当我们射线指向物体,按下手柄侧键时,会抓取该物体到手柄处。

在这里插入图片描述

 

🟧 实现手柄抓取功能

1️⃣ 物体添加交互组件

首先物体完成组件的添加: XRGrabInteractable 组件

 

2️⃣ 关闭原先的手部交互物体

原先我们是用的右手射线交互的,是利用了该物体上的 XRRayInteractor组件完成射线抓取。

现在我们关掉这个物体,不再使用射线抓取。
在这里插入图片描述


 

3️⃣ 新建手柄抓取物体

  • 在Camera Offset下右键,新建 XR - Direct Interactor(Action-based)
  • 这儿我们使用右手抓取。因此再改名为 Right Direct Interactor
  • 同样的,默认创建的是左手的Controller。我们将Sample里面的右手Controller拖拽上去。
    在这里插入图片描述


 

4️⃣ 让手柄显示出来

我们之前做的都只显示射线,不显示手柄。

那么为了能看到手抓取的效果,我们需要:

  • 在 Direct Interactor 下新建一个sphere,来模拟手
  • 取消其Collider
  • 调整到合适比例

当然啦,我们也可以用Pico自带手柄:传送门

在这里插入图片描述

 

5️⃣ 效果展示

在这里插入图片描述

 

🟨 交互功能的控制

1️⃣ 交互功能的逻辑

我们能看到 LeftHand Controller 物体上的 XRRayInteractor 脚本有 InteractionLayerMask属性。

同样的,有这个属性的还有:

  • 直接抓取物体的手柄(Direct Interactor): XRDirectInteractor
  • 地面:TeleportationArea
  • 可交互物体:XRGrabInteractable

在这里插入图片描述
 

这个层的逻辑是:
手柄设置为某一层,其他与这一层有交集的物体,便可与手柄发生交互。(注意:Everything、Nothing)
 

那么我们便可以做各种各样的操作了。例如:

  • 只有左手传送
  • 等待时机才能传送到某地面
  • 只能右手抓取
  • 等待时机才能抓取某物体


 

2️⃣ 实现左手负责传送,右手不传送

左手层级设置为Teleport,地面也设置为Teleport。
右手层级取消Teleport即可。

 

🟩 如何取消射线的显示

以右手为例:

将Alpha值调为0即可。

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值