Follow Pseudo3D Path keeps a third-person 2.5D character at a consistent horizontal offset from a curved Path. Use it with the Pseudo3D Movement Type when the route bends; the ability constrains the character to the route but does not supply movement or snap the character onto the curve.

Before you begin

  • The character needs the Third Person Pseudo3D Movement Type.
  • The camera should use the matching Third Person Pseudo3D view type.
  • The scene needs a Path component with at least one curve segment. Assigning an empty Path component is not a valid route.
  • Place the character on the intended lane relative to the curve before the Pseudo3D Movement Type activates. Follow Pseudo3D Path preserves that starting offset rather than moving the character to the centerline.

Create and assign the Path

  1. Create an empty GameObject in the scene and give it a descriptive name such as MainRoute.
  2. Add the Path component.
  3. Select Add Curve Segment. The Scene view displays the first cubic Bezier segment with a green start point, a red end point, and tangent controls.
  4. Select an endpoint or its smaller tangent handle and position it with the Scene view tool. With a control point selected, use the Position field for exact values.
  5. Select Add Curve Segment again for each additional bend. Adjacent segments share their endpoint, and editing a tangent beside an internal point keeps the opposite tangent aligned for a continuous curve.
  6. Traverse the curve visually from its green start to red end. Keep adjacent handles smooth and avoid sharp reversals that would produce an abrupt tangent change.
  7. Select the character. In Ultimate Character Locomotion > Movement Types, select Third Person Pseudo3D and assign MainRoute to Path.

Build and shape the Path before entering Play Mode. The Version 3 Path calculates its runtime curve from the control points during Awake; moving its Transform or editing points afterward does not rebuild that cached curve.

Add Follow Pseudo3D Path

  1. On the character’s Ultimate Character Locomotion component, expand Abilities.
  2. Select the plus button and add Follow Pseudo3D Path.
  3. Keep Enabled selected, Start Type set to Manual, and Stop Type set to Manual. The Pseudo3D Movement Type change event starts and stops the ability; no input name is required.
  4. Place Follow Pseudo3D Path near the bottom of the ability list. It is concurrent, but its position correction should run after the ordinary movement abilities that produce the frame’s desired movement.
  5. Make Third Person Pseudo3D the active Movement Type. When both perspectives are installed, also select it as Third Person Movement Type.
  6. On the Camera Controller, make Third Person Pseudo3D the active third-person view type.

The ability can start only while Third Person Pseudo3D is active and its Path field is assigned. Switching away from that Movement Type stops the ability. Switching back starts it again when a Path is available.

Choose the movement scenario

Straight side-scroller

Leave Path empty when the stage remains on one fixed plane. The Pseudo3D Movement Type and view type can provide side-view controls and framing without Follow Pseudo3D Path; the ability will not start without a Path.

Curved single lane

Assign a Path and disable Allow Depth Movement on the Pseudo3D Movement Type. Follow Pseudo3D Path records the character’s horizontal offset from the curve when it starts and corrects each frame’s desired movement so that offset remains constant around bends.

This is the most predictable setup for a platformer or side-scroller whose playable route curves through world space.

Curved route with depth lanes

Assign a Path and enable Allow Depth Movement when forward and backward input should move the character across the camera-relative depth axis. While that input is present, Follow Pseudo3D Path updates its stored offset instead of forcing the character back to the original lane. It then preserves the new offset as the route curves.

Test the full allowed lane width at every bend. The Path defines the reference curve, not lane boundaries; use level collision or other gameplay constraints for the outer limits.

Character facing

Look In Move Direction belongs to the Pseudo3D Movement Type rather than this ability. Enable it when the character should face its movement direction along or across the route. When it is disabled, cursor or look-axis input determines facing, using the Path tangent as the local 2.5D plane.

Use Look Rotate Buffer to prevent rapid direction changes while cursor aiming near the character. It does not change how Follow Pseudo3D Path constrains position.

How it runs

When the Pseudo3D Movement Type activates with a Path assigned, Follow Pseudo3D Path starts and finds the closest point and tangent on the curve near the character. It expresses the character position in that local path orientation and stores the horizontal offset.

Each position update starts with the movement already requested by locomotion, root motion, or another ability. Follow Pseudo3D Path evaluates the closest point and tangent at that target position, then changes Desired Movement only enough to preserve the stored offset. It does not set speed, choose a destination, control vertical motion, or advance the character automatically.

When Allow Depth Movement is enabled and forward or backward input is present, that camera-depth movement changes the stored offset. Removing the Path reference while the ability is active stops it. Deactivating the Pseudo3D Movement Type also stops it.

The camera uses the same active Movement Type’s Path tangent to rotate its side view around bends. Camera rotation and character position correction are separate: assigning the Path can orient the camera, but Follow Pseudo3D Path is still required to hold the character’s lane through the curve.

Verify in Play Mode

  1. Enter Play Mode with Third Person Pseudo3D active on both the character and camera. Confirm Follow Pseudo3D Path shows (Active) without a button press.
  2. Start the character on the Path centerline and move through the complete route in both directions. Confirm it follows every bend without drifting across the curve.
  3. Start again at a deliberate offset from the centerline. Confirm that same relative offset is preserved; the ability should not snap the character onto the line.
  4. With Allow Depth Movement disabled, apply forward and backward input and confirm it does not move the character into or out of the gameplay plane.
  5. Enable Allow Depth Movement, move to another lane, release the depth input, and continue around a bend. Confirm the new offset remains stable.
  6. Confirm the camera turns with each Path tangent while the character remains framed from the intended side.
  7. Switch to another Movement Type and confirm the ability stops. Switch back to Third Person Pseudo3D and confirm it starts again with the assigned Path.
  8. Test jumps, root-motion actions, and any other position-modifying abilities used by the game. Vertical motion should remain available while the horizontal route offset stays consistent.

Troubleshoot Follow Pseudo3D Path

Symptom Check Fix
The ability never becomes active. Check Enabled, the active Movement Type, and the Pseudo3D Path field. A Path assigned after Pseudo3D was already activated does not emit a new movement-type event. Activate Third Person Pseudo3D with a valid Path already assigned, or switch away and back after assigning it.
Play Mode reports a Path error as soon as the ability starts. Check whether the assigned Path contains at least one curve segment. Select the Path and use Add Curve Segment before entering Play Mode.
The camera turns at bends but the character drifts away from the route. The Path can orient the Pseudo3D camera even when Follow Pseudo3D Path is missing, inactive, or updated before another position modifier. Add and enable the ability, confirm it is active, and keep it near the bottom of the ability list.
The character stays a fixed distance away from the curve instead of snapping to it. Check the character’s position when the ability first activated. Place the character on the intended lane before activation; preserving the initial offset is expected behavior.
Forward and backward input do not change lanes. Check Allow Depth Movement on the Pseudo3D Movement Type. Enable it only for a game that supports camera-depth movement, then provide collision or level limits for the lane width.
The character slides across lanes around a bend. Check whether another ability below Follow Pseudo3D Path changes Desired Movement, or whether the curve has abrupt tangent reversals. Move Follow Pseudo3D Path later in the list and smooth the Path handles through the bend.
Character facing does not match movement. Check Look In Move Direction, the Path direction, and Look Rotate Buffer. Enable movement-based facing or tune the look settings for cursor/controller aiming, then test travel in both directions.
The camera appears on the wrong side of the route. Check the Path’s green-to-red direction and the Pseudo3D view type’s Forward Axis. Reverse or reshape the route when its direction is wrong, or adjust Forward Axis for the intended camera side.
A Path edited or moved during Play Mode still uses its old shape. The runtime Path curve is cached during Awake. Finish the route before Play Mode. Use a custom runtime path implementation when the curve itself must change during play.
Changing directly to a different Path at runtime produces a wrong offset. Follow Pseudo3D Path retains its current offset and segment state; runtime Path swapping is not a built-in route-transition workflow. Use a designed transition or custom ability that explicitly establishes the new route and offset instead of replacing the reference in place.

Developer reference

FollowPseudo3DPath is a concurrent ability with default Start Type: Manual and Stop Type: Manual. It has no feature-specific serialized fields, Animator ability index, or default state.

The ability listens for OnCharacterChangeMovementType(MovementType movementType, bool active). CanStartAbility requires the active Movement Type to be Pseudo3D with a non-null Path. Update stops the ability if that Path becomes null, and UpdatePosition adjusts UltimateCharacterLocomotion.DesiredMovement rather than moving the Transform directly.

At activation, the ability stores a path-segment index and the character’s local horizontal offset from the closest curve point. The Version 3 Path component constructs one cubic Bezier segment from four control points and adds three control points for each later segment. It converts those local points to a cached world-space curve during Awake.