Guides

VRTK_MoveInPlace

Overview

Moves the SDK Camera Rig based on the motion of the headset and/or the controllers. Attempts to recreate the concept of physically walking on the spot to create scene movement.

This locomotion method is based on Immersive Movement, originally created by Highsight. Thanks to KJack (author of Arm Swinger) for additional work.

Optional Components:

  • VRTK_BodyPhysics - A Body Physics script to help determine potential collisions in the moving direction and prevent collision tunnelling.

Script Usage:

  • Place the VRTK_MoveInPlace script on any active scene GameObject.

Script Dependencies:

  • The Controller Events script on the controller Script Alias to determine when the engage button is pressed.

Inspector Parameters

  • Left Controller: If this is checked then the left controller engage button will be enabled to move the play area.
  • Right Controller: If this is checked then the right controller engage button will be enabled to move the play area.
  • Engage Button: The button to press to activate the movement.
  • Control Options: The device to determine the movement paramters from.
  • Direction Method: The method in which to determine the direction of forward movement.
  • Speed Scale: The speed in which to move the play area.
  • Max Speed: The maximun speed in game units. (If 0 or less, max speed is uncapped)
  • Deceleration: The speed in which the play area slows down to a complete stop when the engage button is released. This deceleration effect can ease any motion sickness that may be suffered.
  • Falling Deceleration: The speed in which the play area slows down to a complete stop when falling is occuring.
  • Smart Decouple Threshold: The degree threshold that all tracked objects (controllers, headset) must be within to change direction when using the Smart Decoupling Direction Method.
  • Sensitivity: The maximum amount of movement required to register in the virtual world. Decreasing this will increase acceleration, and vice versa.
  • Body Physics: An optional Body Physics script to check for potential collisions in the moving direction. If any potential collision is found then the move will not take place. This can help reduce collision tunnelling.

Class Variables

  • public enum ControlOptions - Valid control options
    • HeadsetAndControllers - Track both headset and controllers for movement calculations.
    • ControllersOnly - Track only the controllers for movement calculations.
    • HeadsetOnly - Track only headset for movement caluclations.
  • public enum DirectionalMethod - Options for which method is used to determine direction while moving.
    • Gaze - Will always move in the direction they are currently looking.
    • ControllerRotation - Will move in the direction that the controllers are pointing (averaged).
    • DumbDecoupling - Will move in the direction they were first looking when they engaged Move In Place.
    • SmartDecoupling - Will move in the direction they are looking only if their headset point the same direction as their controllers.
    • EngageControllerRotationOnly - Will move in the direction that the controller with the engage button pressed is pointing.
    • LeftControllerRotationOnly - Will move in the direction that the left controller is pointing.
    • RightControllerRotationOnly - Will move in the direction that the right controller is pointing.

Class Methods

SetControlOptions/1

public virtual void SetControlOptions(ControlOptions givenControlOptions)

  • Parameters
    • ControlOptions givenControlOptions - The control options to set the current control options to.
  • Returns
    • none

Set the control options and modify the trackables to match.

GetMovementDirection/0

public virtual Vector3 GetMovementDirection()

  • Parameters
    • none
  • Returns
    • Vector3 - Returns a Vector3 representing the current movement direction.

The GetMovementDirection method will return the direction the play area is currently moving in.

GetSpeed/0

public virtual float GetSpeed()

  • Parameters
    • none
  • Returns
    • float - Returns a float representing the current movement speed.

The GetSpeed method will return the current speed the play area is moving at.

Example

VRTK/Examples/042_CameraRig_MoveInPlace demonstrates how the user can move and traverse colliders by either swinging the controllers in a walking fashion or by running on the spot utilisng the head bob for movement.