此示例演示了如何与世界空间中的 3D 对象和 2D UI 进行交互。
示例工作原理
该示例展示了如何与场景中的 UI 元素和其他游戏对象进行交互。
浮动的 UI 面板提供了常见的 UI 元素,例如按钮和滚动条。按钮可以通过凝视指针或设备指针进行操作,而示例中的滚动条只能通过设备指针使用。此外,场景中的另一个 UI 元素展示了主机控制器触摸板的输入。
最后,一个可用控制器抓取的互动立方体对象展示了 3D 对象交互。要使其成为有效的交互对象,该立方体需要与 3DWidget 通道发生碰撞或重叠,并且需要实现 BPI_Interactable 接口(位置在 SnapdragonSpacesSamples Content > Snapdragon > Common > Placeable)。要为对象添加接口,请在蓝图中选择Class Settings > Interfaces > Implemented Interfaces > Add。
设备指针控制器
设备指针控制器的实现分为多个蓝图,以下章节将详细描述这些蓝图。
指针控制器组件
BP_PointerControllerComponent 蓝图文件(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Common > Core > Components)可以添加到 pawn 类中,实现与 2D UI 和 3D 对象的指针交互。
该组件继承自父类 BP_ControllerComponent(参见场景设置),提供了管理与世界交互的基础脚本。唯一可以自定义的选项是“运动控制器类”,指的是当激活该控制器时会生成的演员类。
指针控制器
BP_PointerController 蓝图文件(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Common > Placeable)管理射线投射以及与小部件和 3D 对象的交互,它使用名为 3DWidget 的自定义 Trace Channel。为了可视化设备指针控制器,一个圆柱网格会从控制器的原点沿其前进方向渲染。默认情况下,圆柱网格为红色,但当它与有效的交互对象碰撞时,会变为绿色。此外,圆柱网格的长度会根据射线投射的碰撞点进行调整。