admin管理员组

文章数量:1589970

文章目录

  • 🟥 实现射线抓取功能
  • 🟧 实现手柄抓取功能
    • 1️⃣ 物体添加交互组件
    • 2️⃣ 关闭原先的手部交互物体
    • 3️⃣ 新建手柄抓取物体
    • 4️⃣ 让手柄显示出来
    • 5️⃣ 效果展示
  • 🟨 交互功能的控制
    • 1️⃣ 交互功能的逻辑
    • 2️⃣ 实现左手负责传送,右手不传送
  • 🟩 如何取消射线的显示


🟥 实现射线抓取功能

  • 物体添加 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即可。





大家还有什么问题,欢迎在下方留言!



如果你有 技术的问题 项目开发

都可以加下方联系方式

和我聊一聊你的故事🧡

本文标签: 功能教程xRInteractionToolkit