当前位置: 首页 > news >正文

十一、pico+Unity交互开发教程——手指触控交互(Poke Interaction)

一、XR Poke Interactor

  1. 交互包括发起交互的对象(Interactor)和可被交互的对象(Interactable)。XR Interaction Toolkit提供了XR Poke Interactor脚本用于实现Poke功能。
  2. LeftHand ControllerRightHand Controller``物体下创建名为Poke Interactor的空物体,并添加XR Poke Interactor脚本。
  3. 设置XR Poke Interactor中的Attach Transform,在手部模型下创建代表交互点的子物体(如Poke Point),并将其拖至XR Poke Interactor脚本中的Attach Transform处。
    在这里插入图片描述
  4. 若手部有其他Interactor,可将Poke Interactor添加到LeftHand ControllerRightHand Controller上的XR Interaction Group中,确保一个Interactor起作用时其他Interactor暂时失效。

在这里插入图片描述

二、与UI进行触控交互

  1. 添加Tracked Device Graphic RaycasterXR UI Input Module让UI可被交互,在Canvas上添加Tracked Device Graphic Raycaster脚本;
    在这里插入图片描述

  2. 在EventSystem上添加XR UI Input Module脚本。
    在这里插入图片描述

三、与物体进行交互

  1. XR Simple Interactable

    • 用红色方块代表可交互物体,添加XR Simple Interactable脚本。
    • XR Simple InteractableInteractable Events中添加事件,如在Select Entered时让方块材质变成黄色,在Hover Exited时让方块材质变回红色。这个在前面学过
    • 由于XR Simple Interactable默认会被其他Interactor触发,为避免手靠近方块时按下手柄Grip键触发Select Entered事件,可将XR Poke Interactor的Interaction Layer Mask和方块挂载的XR Simple Interactable的Interaction Layer Mask进行设置。经测试,在XRI 2.3.2版本下,可将XR Simple Interactable的Interaction Layer Mask单独设置一个层级(如“Poke”),XR Poke InteractorInteraction Layer Mask设置为Everything,使Poke Interactor单独与方块进行交互。 这个也学过;
  2. XR Poke Filter

    • 运行程序时若无法触发Poke,是因为XR Poke Interactor默认勾选了Require Poke Filter,此时能发生Poke交互的物体必须拥有XR Poke Filter组件。
    • 在方块上添加XR Poke Filter组件,可调整Poke Configuration参数,如将Poke Direction设为Negative Y,即手指从上往下触碰方块时可触发Poke

通过以上步骤,我们成功实现了Unity VR中的手指触控交互功能,为VR体验增添了更多自然和直观的交互方式。

http://www.lryc.cn/news/467210.html

相关文章:

  • Request2:Post请求和Json
  • 【C】数组及其字符串
  • Python 代码实现对《红楼梦》文本的词频统计和数据可视化
  • yjs机器学习数据操作01——数据的获取、可视化
  • w~自动驾驶合集9
  • 232. 用栈实现队列 【复习链表】-用自定义链表实现栈 用栈实现队列
  • G-Set(增长集合,Grow-Only Set)
  • 《Vue.js 组件开发秘籍:从基础到高级》
  • 【Next.js 项目实战系列】03-查看 Issue
  • Android Settings 设置项修改
  • Windows远程桌面到Ubuntu
  • 解释 RESTful API,以及如何使用它构建 web 应用程序(AI)
  • NestJs:处理身份验证和授权
  • Java EE规范
  • Ollama及其Open-WebUI部署更新
  • 手写 | 设计模式
  • 基于深度学习的地形分类与变化检测
  • 进程、线程、协程
  • 嵌入式工程师成长之路(1)——元件基础(完整版)
  • 在Ubuntu 20.04 上安装 CoppeliaSim
  • pulseaudio的相关操作(二)
  • Selenium自动化测试工具
  • 优化UVM环境(九)-将interface文件放在env pkg外面
  • mysql 主从安装
  • 【C++刷题】力扣-#121-买卖股票的最佳时机
  • Python量化交易(二):金融市场的基础概念
  • Java方法的递归调用
  • JavaScript 第30章:综合项目
  • GB/T28181-2022规范解读、应用场景和技术实现探究
  • Docker容器间链路管理