docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class InteractionAttachController

    Manages and controls the anchor position for an XR interaction, handling how interactables snap and follow the interactor. It applies velocity-based scaling for anchor movements and supports stabilization options.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    InteractionAttachController
    Implements
    IInteractionAttachController
    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.Attachment
    Assembly: Unity.XR.Interaction.Toolkit.dll
    Syntax
    [DisallowMultipleComponent]
    [AddComponentMenu("XR/Interactors/Interaction Attach Controller", 22)]
    [HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.2/api/UnityEngine.XR.Interaction.Toolkit.Attachment.InteractionAttachController.html")]
    public class InteractionAttachController : MonoBehaviour, IInteractionAttachController

    Properties

    angleStabilization

    Factor for stabilizing angle. This value represents the maximum angle (in degrees) over which angle stabilization will be applied. Larger values increase the range of stabilization, making the effect more pronounced over a greater angle.

    Declaration
    public float angleStabilization { get; set; }
    Property Value
    Type Description
    float

    combineManipulationAxes

    Whether to allow simultaneous vertical and horizontal rotation or simultaneous translation and horizontal rotation. Disable to allow only one axis of manipulation input at a time based on which axis is most actuated.

    Declaration
    public bool combineManipulationAxes { get; set; }
    Property Value
    Type Description
    bool

    enableDebugLines

    Enable debug lines for the attach transform offset and velocity vector.

    Declaration
    public bool enableDebugLines { get; set; }
    Property Value
    Type Description
    bool

    hasOffset

    Indicates whether the anchor currently has an offset applied.

    Declaration
    public bool hasOffset { get; }
    Property Value
    Type Description
    bool

    manipulationInput

    Input to use for rotating or translating the attach point closer or further away. This effectively rotates or moves the selected grab interactable along the ray.

    Declaration
    public XRInputValueReader<Vector2> manipulationInput { get; set; }
    Property Value
    Type Description
    XRInputValueReader<Vector2>

    manipulationRotateReferenceFrame

    The optional reference frame to define the rotation axes when the anchor is rotated when using manipulation input. When not set, vertical rotation (pitch) is around the local x-axis and horizontal rotation (yaw) is around the local y-axis of the anchor.

    Declaration
    public Transform manipulationRotateReferenceFrame { get; set; }
    Property Value
    Type Description
    Transform

    manipulationRotateSpeed

    Speed at which the anchor is rotated when using manipulation input.

    Declaration
    public float manipulationRotateSpeed { get; set; }
    Property Value
    Type Description
    float
    See Also
    manipulationInput

    manipulationTranslateSpeed

    Speed at which the anchor is translated when using manipulation input.

    Declaration
    public float manipulationTranslateSpeed { get; set; }
    Property Value
    Type Description
    float
    See Also
    manipulationInput

    manipulationXAxisMode

    Mode for what the x-axis (left/right) of the manipulation input does when controlling the anchor.

    Declaration
    public InteractionAttachController.ManipulationXAxisMode manipulationXAxisMode { get; set; }
    Property Value
    Type Description
    InteractionAttachController.ManipulationXAxisMode
    See Also
    InteractionAttachController.ManipulationXAxisMode

    manipulationYAxisMode

    Mode for what the y-axis (up/down) of the manipulation input does when controlling the anchor.

    Declaration
    public InteractionAttachController.ManipulationYAxisMode manipulationYAxisMode { get; set; }
    Property Value
    Type Description
    InteractionAttachController.ManipulationYAxisMode
    See Also
    InteractionAttachController.ManipulationYAxisMode

    maxAdditionalVelocityScalar

    Maximum additional velocity scaling factor for movement, interpolated by a quad bezier curve.

    Declaration
    public float maxAdditionalVelocityScalar { get; set; }
    Property Value
    Type Description
    float
    See Also
    minAdditionalVelocityScalar

    minAdditionalVelocityScalar

    Minimum additional velocity scaling factor for movement, interpolated by a quad bezier curve.

    Declaration
    public float minAdditionalVelocityScalar { get; set; }
    Property Value
    Type Description
    float
    See Also
    maxAdditionalVelocityScalar

    momentumDecayScale

    Decay scalar for momentum when triggered with push/pull gesture. Higher values will cause momentum to decay faster.

    Declaration
    public float momentumDecayScale { get; set; }
    Property Value
    Type Description
    float

    momentumDecayScaleFromInput

    Decay scalar for momentum when triggered with manipulation input. Higher values will cause momentum to decay faster.

    Declaration
    public float momentumDecayScaleFromInput { get; set; }
    Property Value
    Type Description
    float

    motionStabilizationMode

    Gets or sets the stabilization mode for the motion of the anchor. Determines how the anchor's position and rotation are stabilized relative to the followed transform.

    Declaration
    public MotionStabilizationMode motionStabilizationMode { get; set; }
    Property Value
    Type Description
    MotionStabilizationMode

    positionStabilization

    Factor for stabilizing position. This value represents the maximum distance (in meters) over which position stabilization will be applied. Larger values increase the range of stabilization, making the effect more pronounced over a greater distance.

    Declaration
    public float positionStabilization { get; set; }
    Property Value
    Type Description
    float

    pullVelocityBias

    Adjusts the object's velocity calculation when moving towards the user. It modifies the distance-based calculation that determines the velocity scalar. minAdditionalVelocityScalar maxAdditionalVelocityScalar

    Declaration
    public float pullVelocityBias { get; set; }
    Property Value
    Type Description
    float

    pushVelocityBias

    Adjusts the object's velocity calculation when moving away from the user. It modifies the distance-based calculation that determines the velocity scalar. minAdditionalVelocityScalar maxAdditionalVelocityScalar

    Declaration
    public float pushVelocityBias { get; set; }
    Property Value
    Type Description
    float

    smoothOffset

    If true offset will be smoothed over time in XR Origin space. May present some instability if smoothing is toggled during an interaction.

    Declaration
    public bool smoothOffset { get; set; }
    Property Value
    Type Description
    bool

    smoothingSpeed

    Smoothing amount for the anchor's position and rotation. Higher values mean more smoothing occurs faster.

    Declaration
    public float smoothingSpeed { get; set; }
    Property Value
    Type Description
    float

    transformToFollow

    Gets or sets the transform that the anchor should follow.

    Declaration
    public Transform transformToFollow { get; set; }
    Property Value
    Type Description
    Transform

    useDistanceBasedVelocityScaling

    Whether to use distance-based velocity scaling for anchor movement.

    Declaration
    public bool useDistanceBasedVelocityScaling { get; set; }
    Property Value
    Type Description
    bool

    useManipulationInput

    Whether to use input-based manipulation for anchor movement.

    Declaration
    public bool useManipulationInput { get; set; }
    Property Value
    Type Description
    bool

    useMomentum

    Whether momentum is used when useDistanceBasedVelocityScaling is active.

    Declaration
    public bool useMomentum { get; set; }
    Property Value
    Type Description
    bool

    zVelocityRampThreshold

    Scales anchor velocity from 0 to 1 based on z-velocity's deviation below a threshold. 0 means no scaling.

    Declaration
    public float zVelocityRampThreshold { get; set; }
    Property Value
    Type Description
    float

    Methods

    Awake()

    See MonoBehaviour.

    Declaration
    protected virtual void Awake()

    OnDisable()

    See MonoBehaviour.

    Declaration
    protected virtual void OnDisable()

    OnEnable()

    See MonoBehaviour.

    Declaration
    protected virtual void OnEnable()

    OnValidate()

    See MonoBehaviour.

    Declaration
    protected virtual void OnValidate()

    ResetOffset()

    Resets the anchor child's position and rotation to the origin, removing any applied offsets.

    Declaration
    public void ResetOffset()

    Events

    attachUpdated

    Event callback used to notify when the attach controller has been updated.

    Declaration
    public event Action attachUpdated
    Event Type
    Type Description
    Action

    Implements

    IInteractionAttachController
    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)