Guides
These docs are for v3.2.0. Click to read the latest docs for v3.3.0.

VRTK_ControlDirectionGrabAction

extends VRTK_BaseGrabAction

Overview

The Control Direction Grab Action provides a mechanism to control the facing direction of the object when they are grabbed with a secondary controller.

For an object to correctly be rotated it must be created with the front of the object pointing down the z-axis (forward) and the upwards of the object pointing up the y-axis (up).

It's not possible to control the direction of an interactable object with a Fixed_Joint as the joint fixes the rotation of the object.

Inspector Parameters

  • Ungrab Distance: The distance the secondary controller must move away from the original grab position before the secondary controller auto ungrabs the object.
  • Release Snap Speed: The speed in which the object will snap back to it's original rotation when the secondary controller stops grabbing it. 0 for instant snap, infinity for no snap back.
  • Lock Z Rotation: Prevent the secondary controller rotating the grabbed object through it's z-axis.

Class Methods

Initialise/5

public override void Initialise(VRTK_InteractableObject currentGrabbdObject, VRTK_InteractGrab currentPrimaryGrabbingObject, VRTK_InteractGrab currentSecondaryGrabbingObject, Transform primaryGrabPoint, Transform secondaryGrabPoint)

  • Parameters
  • VRTK_InteractableObject currentGrabbdObject - The Interactable Object script for the object currently being grabbed by the primary controller.
  • VRTK_InteractGrab currentPrimaryGrabbingObject - The Interact Grab script for the object that is associated with the primary controller.
  • VRTK_InteractGrab currentSecondaryGrabbingObject - The Interact Grab script for the object that is associated with the secondary controller.
  • Transform primaryGrabPoint - The point on the object where the primary controller initially grabbed the object.
  • Transform secondaryGrabPoint - The point on the object where the secondary controller initially grabbed the object.
  • Returns
  • none

The Initalise method is used to set up the state of the secondary action when the object is initially grabbed by a secondary controller.

ResetAction/0

public override void ResetAction()

  • Parameters
  • none
  • Returns
  • none

The ResetAction method is used to reset the secondary action when the object is no longer grabbed by a secondary controller.

OnDropAction/0

public override void OnDropAction()

  • Parameters
  • none
  • Returns
  • none

The OnDropAction method is executed when the current grabbed object is dropped and can be used up to clean up any secondary grab actions.

ProcessUpdate/0

public override void ProcessUpdate()

  • Parameters
  • none
  • Returns
  • none

The ProcessUpdate method runs in every Update on the Interactable Object whilst it is being grabbed by a secondary controller.

ProcessFixedUpdate/0

public override void ProcessFixedUpdate()

  • Parameters
  • none
  • Returns
  • none

The ProcessFixedUpdate method runs in every FixedUpdate on the Interactable Object whilst it is being grabbed by a secondary controller and influences the rotation of the object.

Example

VRTK/Examples/043_Controller_SecondaryControllerActions demonstrates the ability to grab an object with one controller and control their direction with the second controller.