VRTK_InteractGrab
Overview
Determines if the Interact Touch can initiate a grab with the touched Interactable Object.
Required Components:
VRTK_InteractTouch
- The touch component to determine when a valid touch has taken place to denote a grab can occur. This must be applied on the same GameObject as this script if one is not provided via theInteract Touch
parameter.
Optional Components:
VRTK_ControllerEvents
- The events component to listen for the button presses on. This must be applied on the same GameObject as this script if one is not provided via theController Events
parameter.
Script Usage:
- Place the
VRTK_InteractGrab
script on either:- The GameObject with the Interact Touch and Controller Events scripts.
- Any other scene GameObject and provide a valid
VRTK_ControllerEvents
component to theController Events
parameter and a validVRTK_InteractTouch
component to theInteract Touch
parameter of this script.
Inspector Parameters
- Grab Button: The button used to grab/release a touched Interactable Object.
- Grab Precognition: An amount of time between when the grab button is pressed to when the controller is touching an Interactable Object to grab it.
- Throw Multiplier: An amount to multiply the velocity of any Interactable Object being thrown.
- Create Rigid Body When Not Touching: If this is checked and the Interact Touch is not touching an Interactable Object when the grab button is pressed then a Rigidbody is added to the interacting object to allow it to push other Rigidbody objects around.
- Controller Attach Point: The rigidbody point on the controller model to snap the grabbed Interactable Object to. If blank it will be set to the SDK default.
- Controller Events: The Controller Events to listen for the events on. If the script is being applied onto a controller then this parameter can be left blank as it will be auto populated by the controller the script is on at runtime.
- Interact Touch: The Interact Touch to listen for touches on. If the script is being applied onto a controller then this parameter can be left blank as it will be auto populated by the controller the script is on at runtime.
Class Events
GrabButtonPressed
- Emitted when the grab button is pressed.GrabButtonReleased
- Emitted when the grab button is released.ControllerStartGrabInteractableObject
- Emitted when a grab of a valid object is started.ControllerGrabInteractableObject
- Emitted when a valid object is grabbed.ControllerStartUngrabInteractableObject
- Emitted when a ungrab of a valid object is started.ControllerUngrabInteractableObject
- Emitted when a valid object is released from being grabbed.
Unity Events
Adding the VRTK_InteractGrab_UnityEvents
component to VRTK_InteractGrab
object allows access to UnityEvents
that will react identically to the Class Events.
- All C# delegate events are mapped to a Unity Event with the
On
prefix. e.g.MyEvent
->OnMyEvent
.
Class Methods
IsGrabButtonPressed/0
public virtual bool IsGrabButtonPressed()
- Parameters
- none
- Returns
bool
- Returnstrue
if the grab alias button is being held down.
The IsGrabButtonPressed method determines whether the current grab alias button is being pressed down.
ForceRelease/1
public virtual void ForceRelease(bool applyGrabbingObjectVelocity = false)
- Parameters
bool applyGrabbingObjectVelocity
- If this is true then upon releasing the Interactable Object any velocity on the Interact Touch GameObject will be applied to the Interactable Object to essentiall throw it. Defaults tofalse
.
- Returns
- none
The ForceRelease method will force the Interact Grab to stop grabbing the currently grabbed Interactable Object.
AttemptGrab/0
public virtual void AttemptGrab()
- Parameters
- none
- Returns
- none
The AttemptGrab method will attempt to grab the currently touched Interactable Object without needing to press the grab button on the controller.
GetGrabbedObject/0
public virtual GameObject GetGrabbedObject()
- Parameters
- none
- Returns
GameObject
- The game object of what is currently being grabbed by this controller.
The GetGrabbedObject method returns the current Interactable Object being grabbed by the this Interact Grab.
ForceControllerAttachPoint/1
public virtual void ForceControllerAttachPoint(Rigidbody forcedAttachPoint)
- Parameters
Rigidbody forcedAttachPoint
- The rigidbody to use as the controller attach point.
- Returns
- none
The ForceControllerAttachPoint method updates the rigidbody being used as the controller grab attach position.
Example
VRTK/Examples/005_Controller/BasicObjectGrabbing
demonstrates the grabbing of interactable objects that have the VRTK_InteractableObject
script attached to them. The objects can be picked up and thrown around.
VRTK/Examples/013_Controller_UsingAndGrabbingMultipleObjects
demonstrates that each controller can grab and use objects independently and objects can also be toggled to their use state simultaneously.
VRTK/Examples/014_Controller_SnappingObjectsOnGrab
demonstrates the different mechanisms for snapping a grabbed object to the controller.
Updated less than a minute ago