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
Assembly: Unity.XR.Interaction.Toolkit.dll
Syntax
[AddComponentMenu("XR/XR Interactable Snap Volume", 11)]
[DefaultExecutionOrder(-99)]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.6/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 |
|---|---|
| bool |
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()