Third Person Pseudo3D (2.5D)
Use Third Person Pseudo3D when gameplay should remain readable from the side while the character moves across a straight stage or around a curved 2.5D route. The camera holds a configured distance from the character, limits vertical following with a dead zone, and can rotate with the path used by the paired Pseudo3D Movement Type.
Before you begin
Pair this View Type with the Third Person Pseudo3D Movement Type for camera-relative side movement and path support. The source also recommends Third Person Four Legged, but path-based camera rotation is available only while the active Movement Type is Pseudo3D with a Path assigned.
A curved route also needs the Follow Pseudo3D Path ability. The Movement Type supplies the path tangent that orients the camera; the ability keeps the character at a consistent horizontal offset from the curve.
Set up the Pseudo3D view
- Select the camera with the Camera Controller component and expand View Types.
- Use the add control and select Third Person Pseudo3D. Select its row, then select its radio button in the Active column. When both perspectives are installed, also select it as Third Person View Type.
- Select the character and expand Ultimate Character Locomotion > Movement Types. Add and activate Third Person Pseudo3D, then select it as Third Person Movement Type when both perspectives are installed.
- For a straight side view, leave the Movement Type’s Path empty and use Forward Axis to choose the camera-facing direction.
- For a curved route, build and assign a Path on the Pseudo3D Movement Type, then add Follow Pseudo3D Path to the character’s Abilities list.
- Set View Distance for the side-view composition. Tune Vertical Dead Zone, Move Smoothing, and Rotation Smoothing while testing the fastest movement and largest jump in the level.
- If mouse aiming must reach targets at different depths, enable Depth Look Direction and test it against the project’s actual collision layers. Leave it disabled for aiming constrained to the character’s side-view plane.
- Enter Play Mode and verify movement, framing, aiming, and every path bend before adding secondary spring forces or state-driven field-of-view changes.
Choose a side-view scenario
| Scenario | Movement and path setup | Camera choices | What to verify |
|---|---|---|---|
| Straight side-scroller | Pseudo3D Movement Type with Path empty; usually disable depth movement | Set Forward Axis for the intended side and use a stable View Distance | Left and right movement stay in the gameplay plane and the camera remains on the chosen side. |
| 2.5D lanes | Pseudo3D Movement Type with depth movement enabled | Use Depth Look Direction only when visible-cursor aiming should use scene depth | Forward and backward input change depth without making aiming or framing ambiguous. |
| Curved 2.5D route | Assign a Path and add Follow Pseudo3D Path | Test Forward Axis, rotation response, and View Distance through every tangent change | The camera turns with the path while the character keeps a consistent offset from it. |
| Four-legged side view | Third Person Four Legged Movement Type; no Pseudo3D path integration | Configure a fixed Forward Axis and side composition | Turning and forward movement remain readable without expecting path-driven camera rotation. |
The camera does not travel along the Path independently. It positions itself from the Camera Controller anchor and uses the active Pseudo3D path tangent to calculate its side-facing rotation. The character’s position along a curved route is handled separately by Follow Pseudo3D Path.
Configure framing and response
- Forward Axis adjusts the camera’s facing direction. With no active Pseudo3D Path, it defines the fixed target rotation; with a Path, it is combined with the side direction calculated from the current tangent. Use the default negative forward axis as a starting point, then test path direction and every bend.
- View Distance positions the camera away from the anchor along the camera’s forward direction. Tune it with the final aspect ratio and the widest gameplay area visible.
- Vertical Dead Zone holds the camera’s vertical framing while the character remains within the permitted band. Once the character moves beyond it, the camera follows enough to keep the character at the edge of the band.
- Move Smoothing controls the time used to settle toward a new position. A value of
0applies positional changes immediately. - Rotation Smoothing is the fraction of the target rotation applied during a normal update. A value of
1applies the target rotation immediately; lower positive values add lag. A value of0prevents normal rotation from advancing, so it is not the no-smoothing setting for rotation. - Field Of View and Field Of View Damping control the lens angle and how quickly state-driven field-of-view changes settle.
Pseudo3D does not perform the third-person orbit camera’s obstruction sphere cast. Keep the camera corridor clear through the full route, reduce View Distance where necessary, and use Object Fader only for remaining foreground-visibility cases.
Configure aiming and camera forces
With a visible mouse cursor, the camera casts a ray through the cursor. When Depth Look Direction is disabled, it resolves that ray against the side-view plane through the look position. When enabled, a physics hit can provide a direction with depth; if nothing is hit, the calculation falls back to the plane.
When the cursor is hidden, horizontal and vertical look axes set the look direction instead. Depth Look Direction does not change that controller or virtual-input path. Look Direction Distance limits the visible-cursor physics ray; the View Type’s reported look distance starts at that value and then reflects an accepted cursor direction.
Use Secondary Position Spring and Secondary Rotation Spring for temporary forces such as recoil or camera shake. Establish a stable route, dead zone, and aiming direction first, then add one force source at a time. See Springs for the shared spring controls.
Verify in Play Mode
- Confirm that Third Person Pseudo3D is active on both the camera and character before applying input.
- On a straight section, move left and right. The character should stay readable from the selected side and the camera should hold View Distance from its anchor.
- Jump and change elevation by amounts smaller and larger than Vertical Dead Zone. Small changes should stay inside the held framing; larger changes should make the camera follow while retaining the configured band.
- If depth movement is enabled, move toward and away from the camera. Verify that the character follows the intended lanes and that the level remains readable at both depth limits.
- If a Path is assigned, traverse the complete route in both directions. The camera should rotate with path tangents, while Follow Pseudo3D Path keeps the character’s horizontal offset consistent through bends.
- Test visible-cursor aiming with Depth Look Direction disabled and enabled. Plane-constrained aiming should remain on the 2.5D plane; depth aiming should use valid scene hits and fall back predictably when the ray misses.
- Test controller or virtual look input with the cursor hidden. The look axes should update direction independently of Depth Look Direction.
- Compare abrupt direction changes with several Move Smoothing and Rotation Smoothing values. Position and rotation should settle deliberately without drift, a frozen camera, or excessive lag.
- Traverse foreground geometry, route corners, and the complete camera corridor. No wall or prop should clip through the view; Pseudo3D does not move inward automatically around an obstruction.
- Apply each project-used secondary spring and state-driven field-of-view change, then switch away from and back to Pseudo3D. Framing, aim, and input should return to their expected values.
Troubleshooting
| Symptom | Check | Fix |
|---|---|---|
| Movement direction and camera orientation disagree. | The camera and character may not both have Pseudo3D active. | Select Third Person Pseudo3D in both active lists and dual-perspective dropdowns, then retest input. |
| The camera does not rotate at a path bend. | The active Movement Type may not be Pseudo3D, or its Path may be empty. | Activate Pseudo3D and assign the intended Path to that Movement Type. |
| The character drifts across or away from a curved path. | Follow Pseudo3D Path may be missing, unable to start, or below an unexpected movement modifier. | Add the ability, keep the Path assigned, and place the concurrent ability near the bottom of the ability list. |
| The camera faces the wrong side or flips at part of the route. | Forward Axis, path point order, or a path tangent may oppose the intended view. | Test the fixed axis first, then inspect path direction and tangents at the exact bend. |
| Forward and backward input do nothing. | Allow Depth Movement may be disabled on the Pseudo3D Movement Type. | Enable it only when the game supports depth lanes, then verify both depth limits. |
| Mouse aiming cannot select a target at another depth. | Depth Look Direction may be disabled, or the cursor ray may not hit the target’s layer. | Enable the option and verify colliders, layers, and Look Direction Distance with the actual target. |
| Changing Depth Look Direction has no effect with a controller. | The option is used only while the mouse cursor is visible. | Configure and test the horizontal and vertical look input axes for the cursor-hidden path. |
| The camera never turns after changing Rotation Smoothing. | A value of 0 applies none of the target rotation during normal updates. |
Use a positive value; use 1 when the target rotation should be applied immediately. |
| Position snaps or follows too slowly. | Move Smoothing may be 0 or too large for the character speed. |
Increase it slightly to soften a snap, or reduce it to follow faster. |
| Jumps move the camera too much or leave the character too far from center. | Vertical Dead Zone may be too small or too large. | Test the smallest and largest expected elevation changes, then set a band that keeps both readable. |
| Foreground geometry clips through the camera. | This View Type has no camera-obstruction sweep. | Clear the route’s camera corridor, reduce View Distance, or handle foreground visibility separately. |
| The camera rotates with the path but the character does not stay aligned to it. | Camera path rotation and character path constraint are separate responsibilities. | Add and verify Follow Pseudo3D Path instead of relying on the View Type alone. |
Related pages
- Included View Types
- View Types
- Third Person Pseudo3D Movement Type
- Follow Pseudo3D Path
- Third Person Four Legged Movement Type
- Input
- Object Fader
- Springs
Developer details
Pseudo3D is a direct third-person ViewType whose recommended Movement Types are Pseudo3D and FourLegged. It reports zero pitch and yaw, uses character rotation as its base rotation, and always reports a third-person perspective.
Rotate uses Forward Axis directly when there is no active Pseudo3D Path. With a Path, it takes the cross product of the current path tangent and camera up to calculate the side direction, then applies Forward Axis. Normal updates use Quaternion.Slerp with Rotation Smoothing; immediate updates bypass it.
Move starts from the Camera Controller anchor, applies the vertical-band correction captured when the View Type activates, subtracts camera forward multiplied by View Distance, and uses Vector3.SmoothDamp with Move Smoothing. It then adds Secondary Position Spring and does not perform a collision cast.
The detailed LookDirection overload uses a cursor ray and optional physics hit for visible-cursor input, or the configured look axes when the cursor is hidden. The simple overload returns character forward. Secondary spring rest values can accumulate force, and state changes preserve the previous field-of-view damping for the active camera update.