Class reference
XRController3D
Inherits XRNode3D
A 3D node representing a spatially-tracked controller.
Description
This is a helper 3D node that is linked to the tracking of controllers. It also offers several handy passthroughs to the state of buttons and such on the controllers. Controllers are linked by their ID. You can create controller nodes before the controllers are available. If your game always uses two controllers (one for each hand), you can predefine the controllers with ID 1 and 2; they will become active as soon as the controllers are identified. If you expect additional controllers to be used, you should react to the signals and add XRController3D nodes to your scene. The position of the controller node is automatically updated by the XRServer. This makes this node ideal to add child nodes to visualize the controller. The current XRInterface defines the names of inputs. In the case of OpenXR, these are the names of actions in the current action set from the OpenXR action map.
Methods
float get_float(StringName name) const
float get_float(StringName name) constReturns a numeric value for the input with the given name. This is used for triggers and grip sensors. Note: The current XRInterface defines the name for each input. In the case of OpenXR, these are the names of actions in the current action set.
Variant get_input(StringName name) const
Variant get_input(StringName name) constReturns a Variant for the input with the given name. This works for any input type, the variant will be typed according to the actions configuration. Note: The current XRInterface defines the name for each input. In the case of OpenXR, these are the names of actions in the current action set.
int get_tracker_hand() const
int get_tracker_hand() constReturns the hand holding this controller, if known.
Vector2 get_vector2(StringName name) const
Vector2 get_vector2(StringName name) constReturns a Vector2 for the input with the given name. This is used for thumbsticks and thumbpads found on many controllers. Note: The current XRInterface defines the name for each input. In the case of OpenXR, these are the names of actions in the current action set.
bool is_button_pressed(StringName name) const
bool is_button_pressed(StringName name) constReturns true if the button with the given name is pressed. Note: The current XRInterface defines the name for each input. In the case of OpenXR, these are the names of actions in the current action set.
Signals
button_pressed(String name)
String name)Emitted when a button on this controller is pressed.
button_released(String name)
String name)Emitted when a button on this controller is released.
input_float_changed(String name, float value)
String name, float value)Emitted when a trigger or similar input on this controller changes value.
input_vector2_changed(String name, Vector2 value)
String name, Vector2 value)Emitted when a thumbstick or thumbpad on this controller is moved.
profile_changed(String role)
String role)Emitted when the interaction profile on this controller is changed.