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
Syntax
[AddComponentMenu("XR/XR Controller (Action-based)", 11)]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.1/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 ButtonControl Control or a Value type action with a Press or Sector interaction.
Declaration
public InputActionProperty activateAction { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
See Also
activateActionValue
The Input System action to read values for activating a selected Interactable. Must be an AxisControl Control or Vector2Control Control.
Declaration
public InputActionProperty activateActionValue { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
Remarks
Optional, Unity uses activateAction when not set.
See Also
buttonPressPoint
(Deprecated) The value threshold for when a button is considered pressed to trigger an interaction event. If a button has a value equal to or greater than this value, it is considered pressed.
Declaration
[Obsolete("Marked for deprecation, this property will be removed when Input System dependency version is bumped to 1.1.0.")]
public float buttonPressPoint { get; set; }
Property Value
Type | Description |
---|---|
Single |
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 |
---|---|
InputActionProperty |
positionAction
The Input System action to use for Position Tracking for this GameObject. Must be a Vector3Control Control.
Declaration
public InputActionProperty positionAction { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
rotateAnchorAction
The Input System action to use for rotating the interactor's attach point. Must be a Vector2Control Control. Uses the X-axis as the rotation input.
Declaration
public InputActionProperty rotateAnchorAction { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
rotationAction
The Input System action to use for Rotation Tracking for this GameObject. Must be a QuaternionControl Control.
Declaration
public InputActionProperty rotationAction { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
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 ButtonControl Control or a Value type action with a Press or Sector interaction.
Declaration
public InputActionProperty selectAction { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
See Also
selectActionValue
The Input System action to read values for selecting an Interactable. Must be an AxisControl Control or Vector2Control Control.
Declaration
public InputActionProperty selectActionValue { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
Remarks
Optional, Unity uses selectAction when not set.
See Also
trackingStateAction
The Input System action to get 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 IntegerControl Control.
Declaration
public InputActionProperty trackingStateAction { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
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 Vector2Control Control. Uses the Y-axis as the translation input.
Declaration
public InputActionProperty translateAnchorAction { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
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 ButtonControl Control or a Value type action with a Press interaction.
Declaration
public InputActionProperty uiPressAction { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
See Also
uiPressActionValue
The Input System action to read values for Canvas UI interaction. Must be an AxisControl Control or Vector2Control Control.
Declaration
public InputActionProperty uiPressActionValue { get; set; }
Property Value
Type | Description |
---|---|
InputActionProperty |
Remarks
Optional, Unity uses uiPressAction when not set.
See Also
Methods
IsPressed(InputAction)
Evaluates whether the given input action is considered performed. Unity automatically calls this method during UpdateInput(XRControllerState) to determine if the interaction state is active this frame.
Declaration
protected virtual bool IsPressed(InputAction action)
Parameters
Type | Name | Description |
---|---|---|
InputAction | action | The input action to check. |
Returns
Type | Description |
---|---|
Boolean | 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 MonoBehaviour.
Declaration
protected override void OnDisable()
Overrides
OnEnable()
See MonoBehaviour.
Declaration
protected override void OnEnable()
Overrides
ReadValue(InputAction)
Reads and returns the given action value. Unity automatically calls this method during UpdateInput(XRControllerState) to determine the amount or strength of the interaction state this frame.
Declaration
protected virtual float ReadValue(InputAction action)
Parameters
Type | Name | Description |
---|---|---|
InputAction | action | The action to read the value from. |
Returns
Type | Description |
---|---|
Single | Returns the action value. If the action is null returns the default langword_csharp_float value ( |
See Also
SendHapticImpulse(Single, Single)
Play a haptic impulse on the controller if one is available.
Declaration
public override bool SendHapticImpulse(float amplitude, float duration)
Parameters
Type | Name | Description |
---|---|---|
Single | amplitude | Amplitude (from 0.0 to 1.0) to play impulse at. |
Single | duration | Duration (in seconds) to play haptic impulse. |
Returns
Type | Description |
---|---|
Boolean |
Overrides
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 UpdateController() so explicit calls to this function are not required.
Declaration
protected override void UpdateInput(XRControllerState controllerState)
Parameters
Type | Name | Description |
---|---|---|
XRControllerState | controllerState | The state of the controller. |
Overrides
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 OnBeforeRender() and UpdateController() so explicit calls to this function are not required.
Declaration
protected override void UpdateTrackingInput(XRControllerState controllerState)
Parameters
Type | Name | Description |
---|---|---|
XRControllerState | controllerState | The state of the controller. |