docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class LocomotionProvider

    Base for a behavior that implements a specific type of user locomotion. This behavior communicates with a LocomotionMediator to gain access to the mediator's XRBodyTransformer, which the provider can use to queue IXRBodyTransformations that move the user.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    LocomotionProvider
    ClimbProvider
    ConstrainedMoveProvider
    ContinuousMoveProvider
    TeleportationProvider
    ContinuousTurnProvider
    SnapTurnProvider
    Inherited Members
    MonoBehaviour.IsInvoking()
    MonoBehaviour.CancelInvoke()
    MonoBehaviour.Invoke(string, float)
    MonoBehaviour.InvokeRepeating(string, float, float)
    MonoBehaviour.CancelInvoke(string)
    MonoBehaviour.IsInvoking(string)
    MonoBehaviour.StartCoroutine(string)
    MonoBehaviour.StartCoroutine(string, object)
    MonoBehaviour.StartCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.useGUILayout
    MonoBehaviour.runInEditMode
    Behaviour.enabled
    Behaviour.isActiveAndEnabled
    Component.GetComponent(Type)
    Component.GetComponent<T>()
    Component.TryGetComponent(Type, out Component)
    Component.TryGetComponent<T>(out T)
    Component.GetComponent(string)
    Component.GetComponentInChildren(Type, bool)
    Component.GetComponentInChildren(Type)
    Component.GetComponentInChildren<T>(bool)
    Component.GetComponentInChildren<T>()
    Component.GetComponentsInChildren(Type, bool)
    Component.GetComponentsInChildren(Type)
    Component.GetComponentsInChildren<T>(bool)
    Component.GetComponentsInChildren<T>(bool, List<T>)
    Component.GetComponentsInChildren<T>()
    Component.GetComponentsInChildren<T>(List<T>)
    Component.GetComponentInParent(Type, bool)
    Component.GetComponentInParent(Type)
    Component.GetComponentInParent<T>(bool)
    Component.GetComponentInParent<T>()
    Component.GetComponentsInParent(Type, bool)
    Component.GetComponentsInParent(Type)
    Component.GetComponentsInParent<T>(bool)
    Component.GetComponentsInParent<T>(bool, List<T>)
    Component.GetComponentsInParent<T>()
    Component.GetComponents(Type)
    Component.GetComponents(Type, List<Component>)
    Component.GetComponents<T>(List<T>)
    Component.GetComponents<T>()
    Component.CompareTag(string)
    Component.SendMessageUpwards(string, object, SendMessageOptions)
    Component.SendMessageUpwards(string, object)
    Component.SendMessageUpwards(string)
    Component.SendMessageUpwards(string, SendMessageOptions)
    Component.SendMessage(string, object)
    Component.SendMessage(string)
    Component.SendMessage(string, object, SendMessageOptions)
    Component.SendMessage(string, SendMessageOptions)
    Component.BroadcastMessage(string, object, SendMessageOptions)
    Component.BroadcastMessage(string, object)
    Component.BroadcastMessage(string)
    Component.BroadcastMessage(string, SendMessageOptions)
    Component.transform
    Component.gameObject
    Component.tag
    Object.GetInstanceID()
    Object.GetHashCode()
    Object.Equals(object)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Transform)
    Object.Instantiate(Object, Transform, bool)
    Object.Instantiate<T>(T)
    Object.Instantiate<T>(T, Vector3, Quaternion)
    Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
    Object.Instantiate<T>(T, Transform)
    Object.Instantiate<T>(T, Transform, bool)
    Object.Destroy(Object, float)
    Object.Destroy(Object)
    Object.DestroyImmediate(Object, bool)
    Object.DestroyImmediate(Object)
    Object.FindObjectsOfType(Type)
    Object.FindObjectsOfType(Type, bool)
    Object.FindObjectsByType(Type, FindObjectsSortMode)
    Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode)
    Object.DontDestroyOnLoad(Object)
    Object.FindObjectsOfType<T>()
    Object.FindObjectsByType<T>(FindObjectsSortMode)
    Object.FindObjectsOfType<T>(bool)
    Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
    Object.FindObjectOfType<T>()
    Object.FindObjectOfType<T>(bool)
    Object.FindFirstObjectByType<T>()
    Object.FindAnyObjectByType<T>()
    Object.FindFirstObjectByType<T>(FindObjectsInactive)
    Object.FindAnyObjectByType<T>(FindObjectsInactive)
    Object.FindObjectOfType(Type)
    Object.FindFirstObjectByType(Type)
    Object.FindAnyObjectByType(Type)
    Object.FindObjectOfType(Type, bool)
    Object.FindFirstObjectByType(Type, FindObjectsInactive)
    Object.FindAnyObjectByType(Type, FindObjectsInactive)
    Object.ToString()
    Object.name
    Object.hideFlags
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: UnityEngine.XR.Interaction.Toolkit.Locomotion
    Assembly: Unity.XR.Interaction.Toolkit.dll
    Syntax
    [DefaultExecutionOrder(-210)]
    [MovedFrom("UnityEngine.XR.Interaction.Toolkit")]
    public abstract class LocomotionProvider : MonoBehaviour

    Properties

    canStartMoving

    Whether the provider has finished preparing for locomotion and is ready to enter the Moving state. This only applies when locomotionState is Preparing, so there is no need for this implementation to query locomotionState.

    Declaration
    public virtual bool canStartMoving { get; }
    Property Value
    Type Description
    bool

    isLocomotionActive

    Whether the provider is actively preparing or performing locomotion. This is true when locomotionState is Preparing or Moving, false otherwise.

    Declaration
    public bool isLocomotionActive { get; }
    Property Value
    Type Description
    bool
    See Also
    IsActive(LocomotionState)

    locomotionState

    The current state of locomotion. The mediator determines this state based on the provider's requests for the XRBodyTransformer.

    Declaration
    public LocomotionState locomotionState { get; }
    Property Value
    Type Description
    LocomotionState
    See Also
    TryPrepareLocomotion()
    canStartMoving
    TryEndLocomotion()

    mediator

    The behavior that this provider communicates with for access to the mediator's XRBodyTransformer. If one is not provided, this provider will attempt to locate one during its Awake() call.

    Declaration
    public LocomotionMediator mediator { get; set; }
    Property Value
    Type Description
    LocomotionMediator

    transformationPriority

    The queue order of this provider's transformations of the XR Origin. The lower the value, the earlier the transformations are applied.

    Declaration
    public int transformationPriority { get; set; }
    Property Value
    Type Description
    int
    See Also
    TryQueueTransformation(IXRBodyTransformation)

    Methods

    Awake()

    See MonoBehaviour.

    Declaration
    protected virtual void Awake()

    OnLocomotionEnding()

    Called when locomotion enters the Ended state, after the provider invokes locomotionEnded and before it loses access to the XRBodyTransformer.

    Declaration
    protected virtual void OnLocomotionEnding()

    OnLocomotionStarting()

    Called when locomotion enters the Moving state, after the provider gains access to the XRBodyTransformer and before it invokes locomotionStarted.

    Declaration
    protected virtual void OnLocomotionStarting()

    TryEndLocomotion()

    Attempts to transition this provider into the Ended state. This succeeds if isLocomotionActive was true when this was called.

    Declaration
    protected bool TryEndLocomotion()
    Returns
    Type Description
    bool

    Returns true if isLocomotionActive was true when this was called, false otherwise.

    Remarks

    After this provider enters the Ended state, it will invoke locomotionEnded and lose access to the XRBodyTransformer. Then during the mediator's Update() in the next frame, the provider will enter the Idle state, unless it has called TryPrepareLocomotion() or TryStartLocomotionImmediately() again.

    TryPrepareLocomotion()

    Attempts to transition this provider into the Preparing state. This succeeds if isLocomotionActive was false when this was called.

    Declaration
    protected bool TryPrepareLocomotion()
    Returns
    Type Description
    bool

    Returns true if isLocomotionActive was false when this was called, false otherwise.

    Remarks

    If this succeeds, then the provider can enter the Moving state either by calling TryStartLocomotionImmediately() or by waiting for the mediator's next Update() in which the provider's canStartMoving is true. When the provider enters the Moving state, it will invoke locomotionStarted and gain access to the XRBodyTransformer.

    TryQueueTransformation(IXRBodyTransformation)

    Attempts to queue a transformation to be applied during the active XRBodyTransformer's next Update(). The provider's transformationPriority determines when the transformation is applied in relation to others. The queue attempt only succeeds if the provider is in the Moving state.

    Declaration
    protected bool TryQueueTransformation(IXRBodyTransformation bodyTransformation)
    Parameters
    Type Name Description
    IXRBodyTransformation bodyTransformation

    The transformation that will receive a call to Apply(XRMovableBody) in the next Update().

    Returns
    Type Description
    bool

    Returns true if the provider has access to the XRBodyTransformer, false otherwise.

    Remarks

    This should only be called when locomotionState is Moving, otherwise this method will do nothing and return false.

    See Also
    TryQueueTransformation(IXRBodyTransformation, int)

    TryQueueTransformation(IXRBodyTransformation, int)

    Attempts to queue a transformation to be applied during the active XRBodyTransformer's next Update(). The given priority determines when the transformation is applied in relation to others. The queue attempt only succeeds if the provider is in the Moving state.

    Declaration
    protected bool TryQueueTransformation(IXRBodyTransformation bodyTransformation, int priority)
    Parameters
    Type Name Description
    IXRBodyTransformation bodyTransformation

    The transformation that will receive a call to Apply(XRMovableBody) in the next Update().

    int priority

    Value that determines when to apply the transformation. Transformations with lower priority values are applied before those with higher priority values.

    Returns
    Type Description
    bool

    Returns true if the provider has access to the XRBodyTransformer, false otherwise.

    Remarks

    This should only be called when locomotionState is Moving, otherwise this method will do nothing and return false.

    See Also
    TryQueueTransformation(IXRBodyTransformation)

    TryStartLocomotionImmediately()

    Attempts to transition this provider into the Moving state. This succeeds if locomotionState was not already Moving when this was called.

    Declaration
    protected bool TryStartLocomotionImmediately()
    Returns
    Type Description
    bool

    Returns true if locomotionState was not already Moving when this was called, false otherwise.

    Remarks

    This method bypasses the check for canStartMoving. After this provider enters the Moving state, it will invoke locomotionStarted and gain access to the XRBodyTransformer.

    Events

    beforeStepLocomotion

    Calls the methods in its invocation list just before the XRBodyTransformer applies this provider's transformation(s). This is invoked at most once per frame while locomotionState is Moving, and only if the provider has queued at least one transformation.

    Declaration
    public event Action<LocomotionProvider> beforeStepLocomotion
    Event Type
    Type Description
    Action<LocomotionProvider>
    Remarks

    This is invoked before the XRBodyTransformer applies the transformations from other providers as well.

    locomotionEnded

    Calls the methods in its invocation list when the provider has entered the Ended state.

    Declaration
    public event Action<LocomotionProvider> locomotionEnded
    Event Type
    Type Description
    Action<LocomotionProvider>
    See Also
    locomotionState

    locomotionStarted

    Calls the methods in its invocation list when the provider has entered the Moving state.

    Declaration
    public event Action<LocomotionProvider> locomotionStarted
    Event Type
    Type Description
    Action<LocomotionProvider>
    See Also
    locomotionState
    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)