Class XRInteractableSnapVolume
Utility component for supporting interactors snapping and and selecting interactables. Add this component to a child GameObject of the interactable.
Inherited Members
Namespace: UnityEngine.XR.Interaction.Toolkit
Syntax
[AddComponentMenu("XR/XR Interactable Snap Volume", 11)]
[DefaultExecutionOrder(-99)]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.4/api/UnityEngine.XR.Interaction.Toolkit.XRInteractableSnapVolume.html")]
public class XRInteractableSnapVolume : MonoBehaviour
Remarks
Currently supports one collider as the snapping volume. To support multiple snap colliders for a single interactable, add multiple components with each using a different collider.
Properties
disableSnapColliderWhenSelected
Automatically disable or enable the Snap Collider when the interactable is selected or deselected.
Declaration
public bool disableSnapColliderWhenSelected { get; set; }
Property Value
Type | Description |
---|---|
Boolean |
Remarks
This behavior will always automatically disable the Snap Collider when this behavior is disabled.
interactable
The runtime IXRInteractable associated with this XRInteractableSnapVolume.
Declaration
public IXRInteractable interactable { get; set; }
Property Value
Type | Description |
---|---|
IXRInteractable |
interactableObject
The IXRInteractable associated with this XRInteractableSnapVolume serialized as a Unity Object. If not set, Unity will find it up the hierarchy.
Declaration
public Object interactableObject { get; set; }
Property Value
Type | Description |
---|---|
Object |
Remarks
Use this for Unity Editor scripting. Use interactable to change the interactable at runtime.
interactionManager
The XRInteractionManager that this snap volume will communicate with (will find one if null).
Declaration
public XRInteractionManager interactionManager { get; set; }
Property Value
Type | Description |
---|---|
XRInteractionManager |
snapCollider
The trigger collider to associate with the interactable when it is hit/collided. Rays will snap from this to the snapToCollider.
Declaration
public Collider snapCollider { get; set; }
Property Value
Type | Description |
---|---|
Collider |
Remarks
This should be larger than or positioned away from the snapToCollider. Changing this value at runtime does not alter the enabled state of the previous collider.
See Also
snapToCollider
(Optional) The collider that will be used to find the closest point to snap to. If this is null, then the associated IXRInteractable transform's position or this GameObject's transform position will be used as the snap point.
Declaration
public Collider snapToCollider { get; set; }
Property Value
Type | Description |
---|---|
Collider |
See Also
Methods
Awake()
See MonoBehaviour.
Declaration
protected virtual void Awake()
FindSnapCollider(GameObject)
This method is responsible for finding a valid Collider component available. available. The first valid collider found will be used as the snapCollider.
Declaration
protected static Collider FindSnapCollider(GameObject gameObject)
Parameters
Type | Name | Description |
---|---|---|
GameObject | gameObject | The GameObject to find the Collider component for. |
Returns
Type | Description |
---|---|
Collider | The best snap collider candidate for the provided GameObject. |
Remarks
The snap collider must be a trigger collider, so the collider type can only be a BoxCollider, SphereCollider, CapsuleCollider, or convex MeshCollider.
See Also
GetClosestPoint(Vector3)
Tries to get the closest point on the associated snapping collider. If snapToCollider is null, it will return the transform position of the associated interactable. If both snapToCollider and interactable are null, it will return the transform position of this GameObject.
Declaration
public Vector3 GetClosestPoint(Vector3 point)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | point | The point for which we are trying to find the the nearest point on the snapToCollider. |
Returns
Type | Description |
---|---|
Vector3 | The closest point on the snapToCollider if possible. Defaults to the interactable transform position if available, or the transform position of this GameObject. |
GetClosestPointOfAttachTransform(IXRInteractor)
Tries to get the closest point on the associated snapping collider based on the attach transform position of the associated interactable. If snapToCollider is null, it will return the attach transform position of the associated interactable. If interactable is also null in that case, it will return the transform position of this GameObject.
Declaration
public Vector3 GetClosestPointOfAttachTransform(IXRInteractor interactor)
Parameters
Type | Name | Description |
---|---|---|
IXRInteractor | interactor | The IXRInteractor interacting with the XRInteractableSnapVolume used to get the attach transform. |
Returns
Type | Description |
---|---|
Vector3 | The closest point on the snapToCollider if possible. Defaults to the interactable
attach transform position of the associated |
OnDisable()
See MonoBehaviour.
Declaration
protected virtual void OnDisable()
OnEnable()
See MonoBehaviour.
Declaration
protected virtual void OnEnable()
Reset()
See MonoBehaviour.
Declaration
[Conditional("UNITY_EDITOR")]
protected virtual void Reset()