Moving Platforms

The moving platforms are a generic term meaning any object that can be moved/rotated within the scene. This includes elevators, trains, revolving doors, etc. The character can ride on top of or get pushed around by these moving platforms.

Requirements

In order to stay properly synchronized with the character and camera the object must use the Moving Platform layer:

The Moving Platform or Animator Update component must be added to your movable object. The Moving Platform component should be used for any object that does not have an Animator. The Animator Update component is then used with the Animator. One of these scripts must be attached in order to prevent the character from jittering on a moving platform.

Moving Platform Component

The Moving Platform component allows the object to move or rotate along a given waypoint path. An outline will show the shape of the object at each waypoint object, and a line will connect the waypoints indicating the path that will be traversed.

Setup

Moving platforms can be setup by following:

  1. Create a new empty GameObject that will act as the container for the actual moving platform object and waypoints.
  2. Add your platform that will actually move as a child of the GameObject created in step 1. The Moving Platform component and any colliders should be added to this GameObject. This GameObject should be on the MovingPlatform.
  3. Add any number of child GameObjects to the GameObject created in step 1. These GameObjects will serve as the waypoints that the platform will traverse.
  4. Each waypont should be specified in the Waypoints list under the Moving Platform component.

Inspected Fields

Update Location

Specifies the location that the object should be updated:

  • Update: The object will be updated within Unity’s Update loop.
  • FixedUpdate: The object will be updated within Unity’s FixedUpdate loop.
Waypoints

The Waypoints that the moving platform will traverse. If no waypoints are set then the object will not change positions. With each waypoint a delay and state name can be specified along with the platform. The platform will stay at the waypoint for the specified delay and activate specified state when the platform start to traverse towards that waypoint.

Direction

Specifies the direction that the platform should traverse.

  • Forward: Moves from the waypoint at the least index to the greatest index within the waypoints array.
  • Backwards: Moves from the waypoint at the greatest index to the least index within the waypoints array.
Movement Type

Specifies how the platform traverses through waypoints.

  • Ping Pong: Moves to the last waypoint and then back the way it came from.
  • Loop: Moves to the last waypoint and then directly to the first waypoint.
  • Target: Moves to the specified waypoint index.
Target Waypoint

Specifies the waypoint index to move towards if using the Target Movement Type.

Movement Speed

The speed at which the platform should move.

Movement Interpolation

Specifies how the platform should interpolate the movement speed.

  • Ease In Out: Gently moves into full movement and gently moves out of it at each waypoint.
  • Easy In: Gently moves into full movement.
  • Ease Out: Moves into full movement immediately and gently moves out of full movement at each waypoint.
  • Ease Out 2: Moves into full movement immediately and moves out of full movement according to the movement speed.
  • Slerp: Uses Vector3.Slerp to move in and out of movement according to the movement speed.
  • Lerp: Uses Vector3.Lerp to move in and out of movement according to the movement speed.
Rotation Interpolation

Specifies how the platform should interpolate the rotation speed.

  • Sync To Movement: Rotates according to the movement speed.
  • Ease Out: uses Quaternion.Lerp to lerp the rotation based on a linear curve.
  • Custom Ease Out: Uses Quaternion.Lerp to lerp the rotation based on the Rotation Ease Amount value.
  • Custom Rotate: Rotates according to the rotation speed.
Rotation Ease Amount

Specifies the amount to ease into the target rotation if using the Custom Ease Out Rotation Interpolation mode.

Custom Rotation Speed

Specifies the rotation speed if using the Custom Rotate Rotation Interpolation Mode.

Max Rotation Delta Angle

The maximum angle that the platform can rotation. Set to -1 to have no max angle.

Character Trigger Layer

The layer of the character that can activate the moving platform.

Character Trigger State

The state name that should activate when the character enters the platform trigger. Note that the platform must have a trigger collider in order for the state to be activated.

Enable On Interact

Should the moving platform wait to be enabled until it is interacted with? The Interact ability can start the interaction.

Change Directions On Interact

Should the moving platform change directions when the Interact ability interacts with the platform? The Interact ability can start the interaction.

Gizmo Color

The color to draw the editor gizmo in (editor only).

Draw Debug Labels

Should the delay and distance labels be drawn to the scene view (editor only)?