前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XR Interaction Toolkit教程⭐三、实现抓取和交互功能

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

作者头像
星河造梦坊官方
发布2024-08-15 20:38:54
1290
发布2024-08-15 20:38:54
举报
文章被收录于专栏:星河造梦坊专栏

🟥 实现射线抓取功能

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🟥 实现射线抓取功能
  • 🟧 实现手柄抓取功能
    • 1️⃣ 物体添加交互组件
      • 2️⃣ 关闭原先的手部交互物体
        • 3️⃣ 新建手柄抓取物体
          • 4️⃣ 让手柄显示出来
            • 5️⃣ 效果展示
            • 🟨 交互功能的控制
              • 1️⃣ 交互功能的逻辑
                • 2️⃣ 实现左手负责传送,右手不传送
                • 🟩 如何取消射线的显示
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档