{"_id":"594949e92be16d0026ec0561","category":{"_id":"594949e62be16d0026ec04d2","version":"594949e52be16d0026ec04cd","project":"571fa55ca0acd42000af9545","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2017-01-01T16:41:26.797Z","from_sync":false,"order":4,"slug":"locomotion","title":"Locomotion"},"parentDoc":null,"user":"571fa519db52d01700f5cf3d","project":"571fa55ca0acd42000af9545","version":{"_id":"594949e52be16d0026ec04cd","project":"571fa55ca0acd42000af9545","__v":2,"createdAt":"2017-06-20T16:14:29.816Z","releaseDate":"2017-06-20T16:14:29.816Z","categories":["594949e62be16d0026ec04ce","594949e62be16d0026ec04cf","594949e62be16d0026ec04d0","594949e62be16d0026ec04d1","594949e62be16d0026ec04d2","594949e62be16d0026ec04d3","594949e62be16d0026ec04d4","594949e62be16d0026ec04d5","594949e62be16d0026ec04d6","594949e62be16d0026ec04d7","594949e62be16d0026ec04d8","594949e62be16d0026ec04d9","594949e62be16d0026ec04da","594949e62be16d0026ec04db","594949e62be16d0026ec04dc","594949e62be16d0026ec04dd","594949e62be16d0026ec04de","594949e62be16d0026ec04df","594949e62be16d0026ec04e0","594949e62be16d0026ec04e1","59497219f4a8980024dd0631"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"Kunekune","version_clean":"3.2.0","version":"3.2.0"},"__v":0,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-01-01T16:44:51.993Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":9,"body":"## Overview\n\nMove In Place allows the user to move the play area by calculating the y-movement of the user's headset and/or controllers. The user is propelled forward the more they are moving. This simulates moving in game by moving in real life.\n\n> This locomotion method is based on Immersive Movement, originally created by Highsight. Thanks to KJack (author of Arm Swinger) for additional work.\n\n## Inspector Parameters\n\n * **Left Controller:** If this is checked then the left controller touchpad will be enabled to move the play area.\n * **Right Controller:** If this is checked then the right controller touchpad will be enabled to move the play area.\n * **Engage Button:** Select which button to hold to engage Move In Place.\n * **Control Options:** Select which trackables are used to determine movement.\n * **Direction Method:** How the user's movement direction will be determined.  The Gaze method tends to lead to the least motion sickness.  Smart decoupling is still a Work In Progress.\n * **Speed Scale:** Lower to decrease speed, raise to increase.\n * **Max Speed:** The max speed the user can move in game units. (If 0 or less, max speed is uncapped)\n * **Deceleration:** The speed in which the play area slows down to a complete stop when the user is no longer pressing the engage button. This deceleration effect can ease any motion sickness that may be suffered.\n * **Falling Deceleration:** The speed in which the play area slows down to a complete stop when the user is falling.\n * **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.\n * **Sensitivity:** The maximum amount of movement required to register in the virtual world.  Decreasing this will increase acceleration, and vice versa.\n * **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.\n\n## Class Variables\n\n * `public enum ControlOptions` - Options for testing if a play space fall is valid.\n  * `HeadsetAndControllers` - Track both headset and controllers for movement calculations.\n  * `ControllersOnly` - Track only the controllers for movement calculations.\n  * `HeadsetOnly` - Track only headset for movement caluclations.\n * `public enum DirectionalMethod` - Options for which method is used to determine player direction while moving.\n  * `Gaze` - Player will always move in the direction they are currently looking.\n  * `ControllerRotation` - Player will move in the direction that the controllers are pointing (averaged).\n  * `DumbDecoupling` - Player will move in the direction they were first looking when they engaged Move In Place.\n  * `SmartDecoupling` - Player will move in the direction they are looking only if their headset point the same direction as their controllers.\n  * `EngageControllerRotationOnly` - Player will move in the direction that the controller with the engage button pressed is pointing.\n  * `LeftControllerRotationOnly` - Player will move in the direction that the left controller is pointing.\n  * `RightControllerRotationOnly` - Player will move in the direction that the right controller is pointing.\n\n## Class Methods\n\n### SetControlOptions/1\n\n  > `public virtual void SetControlOptions(ControlOptions givenControlOptions)`\n\n  * Parameters\n   * `ControlOptions givenControlOptions` - The control options to set the current control options to.\n  * Returns\n   * _none_\n\nSet the control options and modify the trackables to match.\n\n### GetMovementDirection/0\n\n  > `public virtual Vector3 GetMovementDirection()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `Vector3` - Returns a vector representing the player's current movement direction.\n\nThe GetMovementDirection method will return the direction the player is moving.\n\n### GetSpeed/0\n\n  > `public virtual float GetSpeed()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `float` - Returns a float representing the player's current movement speed.\n\nThe GetSpeed method will return the current speed the player is moving at.\n\n## Example\n\n`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.","excerpt":"","slug":"vrtk_moveinplace","type":"basic","title":"VRTK_MoveInPlace"}
## Overview Move In Place allows the user to move the play area by calculating the y-movement of the user's headset and/or controllers. The user is propelled forward the more they are moving. This simulates moving in game by moving in real life. > This locomotion method is based on Immersive Movement, originally created by Highsight. Thanks to KJack (author of Arm Swinger) for additional work. ## Inspector Parameters * **Left Controller:** If this is checked then the left controller touchpad will be enabled to move the play area. * **Right Controller:** If this is checked then the right controller touchpad will be enabled to move the play area. * **Engage Button:** Select which button to hold to engage Move In Place. * **Control Options:** Select which trackables are used to determine movement. * **Direction Method:** How the user's movement direction will be determined. The Gaze method tends to lead to the least motion sickness. Smart decoupling is still a Work In Progress. * **Speed Scale:** Lower to decrease speed, raise to increase. * **Max Speed:** The max speed the user can move 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 user is no longer pressing the engage button. 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 the user is falling. * **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` - Options for testing if a play space fall is valid. * `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 player direction while moving. * `Gaze` - Player will always move in the direction they are currently looking. * `ControllerRotation` - Player will move in the direction that the controllers are pointing (averaged). * `DumbDecoupling` - Player will move in the direction they were first looking when they engaged Move In Place. * `SmartDecoupling` - Player will move in the direction they are looking only if their headset point the same direction as their controllers. * `EngageControllerRotationOnly` - Player will move in the direction that the controller with the engage button pressed is pointing. * `LeftControllerRotationOnly` - Player will move in the direction that the left controller is pointing. * `RightControllerRotationOnly` - Player 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 vector representing the player's current movement direction. The GetMovementDirection method will return the direction the player is moving. ### GetSpeed/0 > `public virtual float GetSpeed()` * Parameters * _none_ * Returns * `float` - Returns a float representing the player's current movement speed. The GetSpeed method will return the current speed the player 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.