Node Copied to Clipboard!

Virtual Reality Nodes

Twist on Radius

The twist on radius node will wait for the user to press the VR controller trigger on an object and twist on the specified axis of rotation. The twistOnRadius node is dereferenced from a scenemodel.

  • Delta Rotation: Specify the rotation of the model.
  • Local axis of Rotation: Put a 1 in the local axis of rotation field (If you want the dial to rotate on the Y axis then put a 1 in the Y field).
  • Move degrees: is the number of degrees the controller will need to be rotated. To rotate counter clockwise use a minus infront of the delta rotation and move degrees.
  • Rotation Multiplyer: number of times the scenemodel will rotate the specified degrees.


If you would like an interaction to work one way in PC and another in VR you can use the IsVR node to define the differences.

To call the IsVR node you need to dereference it from the Services node. This node will detect whether the user is playing the lesson in VR and return True otherwise it will return False.

Since it has a True/False output you will need to dereference an If node to define the paths. Add the interaction sequence you want to use in VR to the first parameter if you want to define a PC interaction then use the else parameter.


VR Input Manager

The VRInputManager node is used to gather information about VR user interactions during the lesson, set their starting position and controller skins. We call the VRInputManager by dereferencing it from the Services node.

Note: VR Input Manager functions will cause your lesson to crash if they are executed in a PC instance so they must always be attached to an IsVR check.


The teleport node is a VR input Manager function that will set the starting position for the VR user. In PC you set the starting position by setting the position of the Main Camera in the setup node. If you would like the VR starting position to be the same you can easily grab the Main Camera's position and rotation by calling the Main Camera object and dereferencing its position/rotation property.

  • Position (vector3): The starting position of VR player.
  • Direction (Quaternion): The starting rotation of VR player.


Functions such as IsTriggerDown, IsTriggerUp, IsTriggerPressing are used to determine the state of the VR controller trigger.

  • Hand (VRControllerHand): Which VR Controller to check. Double-click to populate constant. Click on constant and choose hand (left or right) from dropdown menu in properties tab.


IsSceneObjectRayHit is a VR Input Manager function that detects if the specified VR Controller is hovering over the specified sceneobject.

  • Hand (VRControllerHand): The Controller you are checking.
  • SceneObject: The target SceneObject.

Set Controller Override Model

The setControllerOverrideModel node will set the VR controller model to use the specified scenemodel.

  • Hand (VrControllerHand): The controller you want to change the model for.
  • Model (Unity GameObject): The GameObject you want to set the controller to. Dereference UnitView.GameObject from the scenemodel.

Clear Controller Override Model

ClearControlleroverrideModel will clear the specified model from the controller.

  • Hand (VRControllerHand): The controller you want to clear the model from.
  • Model (Unity GameObject): The GameObject you want to clear from the controller. Dereference UnitView.GameObject from the scenemodel.

Show 3D Labels targeting VR Controller Buttons

You can use the TargetGameObject node to target a 3D label to a VR controller button by using the VRInputManager node as shown in image below. The "GetController" takes a string value indicating the left or right controller. "GetAttachObject" is the string value naming the button you want to target.