Table of Contents

Class XRController3D

A 3D node representing a spatially-tracked controller.

Inheritance
XRController3D

Remarks

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.

As many XR runtimes now use a configurable action map all inputs are named.

See Also

Methods

get_float(StringName)

Qualifiers: const

Returns a numeric value for the input with the given name. This is used for triggers and grip sensors.

float get_float(StringName name)

Parameters

name StringName

get_input(StringName)

Qualifiers: const

Returns 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.

Variant get_input(StringName name)

Parameters

name StringName

get_tracker_hand

Qualifiers: const

Returns the hand holding this controller, if known. See TrackerHand.

int get_tracker_hand

get_vector2(StringName)

Qualifiers: const

Returns a Vector2 for the input with the given name. This is used for thumbsticks and thumbpads found on many controllers.

Vector2 get_vector2(StringName name)

Parameters

name StringName

is_button_pressed(StringName)

Qualifiers: const

Returns true if the button with the given name is pressed.

bool is_button_pressed(StringName name)

Parameters

name StringName

Events

button_pressed(String)

Emitted when a button on this controller is pressed.

signal button_pressed(String name)

Parameters

name String

button_released(String)

Emitted when a button on this controller is released.

signal button_released(String name)

Parameters

name String

input_float_changed(String, float)

Emitted when a trigger or similar input on this controller changes value.

signal input_float_changed(String name, float value)

Parameters

name String
value float

input_vector2_changed(String, Vector2)

Emitted when a thumbstick or thumbpad on this controller is moved.

signal input_vector2_changed(String name, Vector2 value)

Parameters

name String
value Vector2

profile_changed(String)

Emitted when the interaction profile on this controller is changed.

signal profile_changed(String role)

Parameters

role String