docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class XRSocketGrabTransformer

    Transformer used when an interactable is snapped to a socket. Applies both when select is active and when hover socket snapping is active.

    Inheritance
    object
    XRSocketGrabTransformer
    Implements
    IXRGrabTransformer
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: UnityEngine.XR.Interaction.Toolkit.Transformers
    Assembly: Unity.XR.Interaction.Toolkit.dll
    Syntax
    [HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.0/api/UnityEngine.XR.Interaction.Toolkit.Transformers.XRSocketGrabTransformer.html")]
    public class XRSocketGrabTransformer : IXRGrabTransformer

    Properties

    canProcess

    Whether this grab transformer can process targets. Transformers that can process targets receive calls to Process(XRGrabInteractable, UpdatePhase, ref Pose, ref Vector3), transformers that cannot process do not. Transformers will still have other event methods called to allow for initialization on the frame the grab changes happens.

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

    fixedScale

    Scale factor applied to the interactable when scale mode is set to Fixed.

    Declaration
    public float3 fixedScale { get; set; }
    Property Value
    Type Description
    float3

    scaleMode

    Scale mode used to calculate the scale factor applied to the interactable when hovering.

    Declaration
    public SocketScaleMode scaleMode { get; set; }
    Property Value
    Type Description
    SocketScaleMode

    socketInteractor

    The current socket interactor.

    Declaration
    public IXRInteractor socketInteractor { get; set; }
    Property Value
    Type Description
    IXRInteractor

    socketSnappingRadius

    When socket snapping is enabled, this is the radius within which the interactable will snap to the socket's attach transform while hovering.

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

    targetBoundsSize

    Bounds size used to calculate the scale factor applied to the interactable when scale mode is set to Stretched To Fit Size.

    Declaration
    public float3 targetBoundsSize { get; set; }
    Property Value
    Type Description
    float3

    Methods

    OnGrab(XRGrabInteractable)

    Called by Unity when the given Interactable is grabbed (in other words, when entering the Select state). This method won't be called again until the Interactable is released by every Interactor. Use this to do any code initialization based on the first Interactor that selects the Interactable.

    Declaration
    public void OnGrab(XRGrabInteractable grabInteractable)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable being grabbed.

    Remarks

    In other words, this will be called when the selection count changes from 0 to 1.

    See Also
    OnGrabCountChanged(XRGrabInteractable, Pose, Vector3)
    Grab()

    OnGrabCountChanged(XRGrabInteractable, Pose, Vector3)

    Called by Unity each time the number of selections changes for the given Interactable while grabbed by at least one Interactor, including when it is first grabbed. Use this to do any code initialization based on each Interactor currently selecting the Interactable, for example computing the initial distance between both Interactors grabbing the object.

    Declaration
    public void OnGrabCountChanged(XRGrabInteractable grabInteractable, Pose targetPose, Vector3 localScale)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable being grabbed.

    Pose targetPose

    The current target pose for the current frame.

    Vector3 localScale

    The current target scale of the Interactable's transform relative to the GameObject's parent.

    Remarks

    There will always be at least one Interactor selecting the Interactable when this method is called. In other words, this will be called when the selection count changes from 0 to 1 and whenever it subsequently changes while still above 0. This method is called by Unity right before Process(XRGrabInteractable, UpdatePhase, ref Pose, ref Vector3) if the selection count changed.

    Examples

    To get the number of Interactors selecting the Interactable in your implementation method:

      grabInteractable.interactorsSelecting.Count
    

    OnLink(XRGrabInteractable)

    Called by Unity when the given Interactable links to this grab transformer. Use this to do any code initialization for the given Interactable.

    Declaration
    public void OnLink(XRGrabInteractable grabInteractable)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable being linked to this transformer.

    See Also
    OnUnlink(XRGrabInteractable)

    OnUnlink(XRGrabInteractable)

    Called by Unity when the given Interactable unlinks from this grab transformer. Use this to do any code cleanup for the given Interactable.

    Declaration
    public void OnUnlink(XRGrabInteractable grabInteractable)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable being unlinked from this transformer.

    See Also
    OnLink(XRGrabInteractable)

    Process(XRGrabInteractable, UpdatePhase, ref Pose, ref Vector3)

    Called by the linked Interactable to calculate the target pose and scale. Modify the value of targetPose and/or localScale (or neither).

    Declaration
    public void Process(XRGrabInteractable grabInteractable, XRInteractionUpdateOrder.UpdatePhase updatePhase, ref Pose targetPose, ref Vector3 localScale)
    Parameters
    Type Name Description
    XRGrabInteractable grabInteractable

    The XR Grab Interactable to calculate the target pose and scale for.

    XRInteractionUpdateOrder.UpdatePhase updatePhase

    The update phase this is called during.

    Pose targetPose

    The target pose for the current frame.

    Vector3 localScale

    The target scale of the Interactable's transform relative to the GameObject's parent.

    Remarks

    When there is more than one linked grab transformer that can process, the updated value of each ref parameter is passed to each in series according to its order in the list. You can utilize this by, for example, having the first grab transformer compute the target pose, and the second compute just the scale.

    Examples

    If your transformer requires the use of two or more selections, you should first check for that condition in your implementation method:

      if (grabInteractable.interactorsSelecting.Count < 2) return;
    
    See Also
    ProcessInteractable(UpdatePhase)
    XRInteractionUpdateOrder.UpdatePhase

    Implements

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