pico+Unity交互开发教程——手指触控交互(Poke Interaction)
一、XR Poke Interactor
- 交互包括发起交互的对象(Interactor)和可被交互的对象(Interactable)。XR Interaction Toolkit提供了
XR Poke Interactor
脚本用于实现Poke功能。 - 在
LeftHand Controller
和RightHand Controller``物体下
创建名为Poke Interactor
的空物体,并添加XR Poke Interactor
脚本。 - 设置
XR Poke Interactor
中的Attach Transform
,在手部模型下创建代表交互点的子物体(如Poke Point
),并将其拖至XR Poke Interactor
脚本中的Attach Transform
处。
- 若手部有其他
Interactor
,可将Poke Interactor
添加到LeftHand Controller
和RightHand Controller
上的XR Interaction Group
中,确保一个Interactor
起作用时其他Interactor
暂时失效。
二、与UI进行触控交互
-
添加
Tracked Device Graphic Raycaster
和XR UI Input Module
让UI可被交互,在Canvas上添加Tracked Device Graphic Raycaster
脚本;
-
在EventSystem上添加
XR UI Input Module
脚本。
三、与物体进行交互
-
XR Simple Interactable
- 用红色方块代表可交互物体,添加
XR Simple Interactable
脚本。 - 在
XR Simple Interactable
的Interactable 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 Interactor
的Interaction Layer Mask
设置为Everything
,使Poke Interactor
单独与方块进行交互。 这个也学过;
- 用红色方块代表可交互物体,添加
-
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体验增添了更多自然和直观的交互方式。