XRController3D

继承: XRNode3D < Node3D < Node < Object

表示空间跟踪控制器的 3D 节点。

描述

这是一个辅助 3D 节点,链接到控制器的跟踪。它还为控制器上的按钮等状态提供了一些方便的直通方式。

控制器通过其 ID 链接。可以在控制器可用之前创建控制器节点。如果游戏总是使用两个控制器(每只手一个),可以预定义 ID 为 1 和 2 的控制器;一旦控制器被识别,它们将被立即激活。如果希望使用额外的控制器,应该对这些信号做出反应并将 XRController3D 节点添加到场景中。

控制器节点的位置由 XRServer 自动更新。这使得该节点非常适合添加子节点以可视化控制器。

输入的名称由当前的 XRInterface 定义。使用 OpenXR 时,是 OpenXR 动作映射的当前动作集中的动作名称。

教程

方法

float

get_float(name: StringName) const

Variant

get_input(name: StringName) const

TrackerHand

get_tracker_hand() const

Vector2

get_vector2(name: StringName) const

bool

is_button_pressed(name: StringName) const


信号

button_pressed(name: String) 🔗

当该控制器上的一个按钮被按下时触发。


button_released(name: String) 🔗

当该控制器上的一个按钮被释放时触发。


input_float_changed(name: String, value: float) 🔗

当该控制器上的触发器或类似输入更改值时发出。


input_vector2_changed(name: String, value: Vector2) 🔗

当该控制器上的拇指杆或拇指板被移动时发出。


profile_changed(role: String) 🔗

当该控制器上的交互配置文件发生改变时发出。


方法说明

float get_float(name: StringName) const 🔗

返回名称为 name 的输入对应的数值。适用于扳机和握力传感器等输入。

注意:各个输入的 name 由当前的 XRInterface 定义。如果是 OpenXR,则为当前动作集中动作的名称。


Variant get_input(name: StringName) const 🔗

返回名称为 name 的输入对应的 Variant。适用于所有输入类型,变体的具体类型由动作配置决定。

注意:各个输入的 name 由当前的 XRInterface 定义。如果是 OpenXR,则为当前动作集中动作的名称。


TrackerHand get_tracker_hand() const 🔗

返回持握这个控制器的手,如果已知。


Vector2 get_vector2(name: StringName) const 🔗

返回名称为 name 的输入对应的 Vector2。适用于许多控制器上能够找到的摇杆和触摸板。

注意:各个输入的 name 由当前的 XRInterface 定义。如果是 OpenXR,则为当前动作集中动作的名称。


bool is_button_pressed(name: StringName) const 🔗

如果名称为 name 的按钮处于按下状态,则返回 true

注意:各个输入的 name 由当前的 XRInterface 定义。如果是 OpenXR,则为当前动作集中动作的名称。