Class ActionBasedController
Interprets feature values on a tracked input controller device using actions from the Input System into XR Interaction states, such as Select. Additionally, it applies the current Pose value of a tracked device to the transform of the GameObject.
Inherited Members
Namespace: UnityEngine .XR.Interaction.Toolkit
Assembly: Unity.XR.Interaction.Toolkit.dll
Syntax
[AddComponentMenu("XR/XR Controller (Action-based)", 11)]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.5/api/UnityEngine.XR.Interaction.Toolkit.ActionBasedController.html")]
public class ActionBasedController : XRBaseController
Remarks
This behavior requires that the Input System is enabled in the Active Input Handling setting in Edit > Project Settings > Player for input values to be read. Each input action must also be enabled to read the current value of the action. Referenced input actions in an Input Action Asset are not enabled by default.
Properties
activateAction
The Input System action to use for activating a selected Interactable.
Must be an action with a button-like interaction where phase equals performed when pressed.
Typically a Unity
Declaration
public InputActionProperty activateAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
activateActionValue
The Input System action to read values for activating a selected Interactable.
Must be an Unity
Declaration
public InputActionProperty activateActionValue { get; set; }
Property Value
Type | Description |
---|---|
Input |
Remarks
Optional, Unity uses activate
See Also
directionalAnchorRotationAction
The Input System action to use for computing a direction angle to rotate the interactor's attach point to match it.
Must be a Unity
Declaration
public InputActionProperty directionalAnchorRotationAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
hapticDeviceAction
The Input System action to use for identifying the device to send haptic impulses to. Can be any control type that will have an active control driving the action.
Declaration
public InputActionProperty hapticDeviceAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
isTrackedAction
The Input System action to read the Is Tracked state when updating this GameObject position and rotation;
falls back to the tracked device's is tracked state that drives the position or rotation action when not set.
Must be an action with a button-like interaction where phase equals performed when is tracked.
Typically a Unity
Declaration
public InputActionProperty isTrackedAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
positionAction
The Input System action to use for Position Tracking for this GameObject. Must be a Unity
Declaration
public InputActionProperty positionAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
rotateAnchorAction
The Input System action to use for rotating the interactor's attach point over time.
Must be a Unity
Declaration
public InputActionProperty rotateAnchorAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
rotationAction
The Input System action to use for Rotation Tracking for this GameObject. Must be a Unity
Declaration
public InputActionProperty rotationAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
scaleDeltaAction
The Input System action to use for providing a scale delta value to transformers.
Must be a Unity
Declaration
public InputActionProperty scaleDeltaAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
scaleToggleAction
The Input System action to use to enable or disable reading from the Scale Delta Action.
Must be a Unity
Declaration
public InputActionProperty scaleToggleAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
selectAction
The Input System action to use for selecting an Interactable.
Must be an action with a button-like interaction where phase equals performed when pressed.
Typically a Unity
Declaration
public InputActionProperty selectAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
selectActionValue
The Input System action to read values for selecting an Interactable.
Must be an Unity
Declaration
public InputActionProperty selectActionValue { get; set; }
Property Value
Type | Description |
---|---|
Input |
Remarks
Optional, Unity uses select
See Also
trackingStateAction
The Input System action to read the Tracking State when updating this GameObject position and rotation;
falls back to the tracked device's tracking state that drives the position or rotation action when not set.
Must be an Unity
Declaration
public InputActionProperty trackingStateAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
translateAnchorAction
The Input System action to use for translating the interactor's attach point closer or further away from the interactor.
Must be a Unity
Declaration
public InputActionProperty translateAnchorAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
uiPressAction
The Input System action to use for Canvas UI interaction.
Must be an action with a button-like interaction where phase equals performed when pressed.
Typically a Unity
Declaration
public InputActionProperty uiPressAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
uiPressActionValue
The Input System action to read values for Canvas UI interaction.
Must be an Unity
Declaration
public InputActionProperty uiPressActionValue { get; set; }
Property Value
Type | Description |
---|---|
Input |
Remarks
Optional, Unity uses ui
See Also
uiScrollAction
The Input System action to read values for Canvas UI scrolling.
Must be a Unity
Declaration
public InputActionProperty uiScrollAction { get; set; }
Property Value
Type | Description |
---|---|
Input |
See Also
Methods
IsPressed(InputAction)
Evaluates whether the given input action is considered performed.
Unity automatically calls this method during Update
Declaration
protected virtual bool IsPressed(InputAction action)
Parameters
Type | Name | Description |
---|---|---|
Input |
action | The input action to check. |
Returns
Type | Description |
---|---|
bool | Returns true when the input action is considered performed. Otherwise, returns false. |
Remarks
More accurately, this evaluates whether the action with a button-like interaction is performed. Depending on the interaction of the input action, the control driving the value of the input action may technically be pressed and though the interaction may be in progress, it may not yet be performed, such as for a Hold interaction. In that example, this method returns false.
See Also
OnDisable()
See Mono
Declaration
protected override void OnDisable()
Overrides
See Also
OnEnable()
See Mono
Declaration
protected override void OnEnable()
Overrides
See Also
ReadValue(InputAction)
Reads and returns the given action value.
Unity automatically calls this method during Update
Declaration
protected virtual float ReadValue(InputAction action)
Parameters
Type | Name | Description |
---|---|---|
Input |
action | The action to read the value from. |
Returns
Type | Description |
---|---|
float | Returns the action value. If the action is null returns the default float value ( |
See Also
SendHapticImpulse(float, float)
Play a haptic impulse on the controller if one is available.
Declaration
public override bool SendHapticImpulse(float amplitude, float duration)
Parameters
Type | Name | Description |
---|---|---|
float | amplitude | Amplitude (from 0.0 to 1.0) to play impulse at. |
float | duration | Duration (in seconds) to play haptic impulse. |
Returns
Overrides
See Also
UpdateInput(XRControllerState)
Updates the XR Interaction states in the given controller state based on the current inputs of the controller device.
Unity calls this automatically during Update
Declaration
protected override void UpdateInput(XRControllerState controllerState)
Parameters
Type | Name | Description |
---|---|---|
XRController |
controllerState | The state of the controller. |
Overrides
See Also
UpdateTrackingInput(XRControllerState)
Updates the pose values in the given controller state based on the current tracking input of the controller device.
Unity calls this automatically from Fixed
Declaration
protected override void UpdateTrackingInput(XRControllerState controllerState)
Parameters
Type | Name | Description |
---|---|---|
XRController |
controllerState | The state of the controller. |