Third Person Top Down turns direct movement input into overhead, screen-relative travel and can face either the movement direction or an independent cursor/right-stick aim direction. Pair it with the Top Down View Type for action games, twin-stick controls, or movement-facing overhead characters.

Top Down is one of three Movement Types recommended by that View Type. Use Point & Click for destination-driven navigation or Four Legged for creature-oriented turning. Four Legged preserves sideways input by default; its Rotate To Face Input Direction mode clears that component. Neither is a mode of direct Top Down movement.

Before you begin

  • Create a working third-person player character with Ultimate Character Locomotion, Ultimate Character Locomotion Handler, player input, and an attached Camera Controller.
  • Configure the movement and look actions through Input. Direct Top Down normally reads Horizontal and Vertical for movement, then uses the pointer or the configured horizontal/vertical look axes for facing.
  • Decide who owns character facing: movement, cursor, controller look axes, root-motion animation, or an ability. Two owners can fight each other even when the camera framing looks correct.
  • For a generic or non-humanoid character, identify a stable head or upper-body Transform. Humanoids can obtain the head from the Animator automatically.

Build the direct Top Down pair

  1. Open Tools > Opsive > Ultimate Character Controller > Character Manager.
  2. Choose Third from Perspective and choose Top Down from Third Person Movement.
  3. Complete the model, Animator, input, item, and ability choices, then select Build Character. Use Update Character for an existing character.
  4. Select the character root. Under Ultimate Character Locomotion > Movement Types, confirm Third Person Top Down is present and selected as Active. When both perspectives are installed, also select it as Third Person Movement Type.
  5. Select the Top Down row and configure Relative Camera Movement, Look In Move Direction, and Head.
  6. Select the camera, expand Camera Controller > View Types, add and activate Third Person Top Down, and select it as Third Person View Type when both perspectives are installed.
  7. Set the camera’s Forward Axis, Up Axis, Pitch Limit, and View Distance, then test movement and aim before adding camera state transitions or springs.

Configure movement and facing

Setting Released Version 3 default Choose it by scenario
Relative Camera Movement enabled Keep it enabled for screen-relative controls. Input is rotated from the camera orientation into the character’s local input and diagonal magnitude is clamped to 1.
Look In Move Direction disabled Enable it when travel input should control facing. Leave it disabled for cursor or right-stick aiming independent of movement.
Head unassigned Leave it empty for a valid humanoid Animator so Top Down can find the humanoid head. Assign a stable Transform for a generic rig; otherwise the character root is used.

With Relative Camera Movement enabled, forward means toward the top of the camera composition, backward means toward the bottom, and horizontal input moves left or right across the view. Rotating the camera changes those world directions while preserving the same screen directions.

Disabling Relative Camera Movement does not create fixed world-axis movement in the released Version 3 implementation. It passes the input vector through unchanged, so Character Locomotion interprets it in the character’s current local axes. Use a custom Movement Type when a cursor-facing character must move along fixed world axes regardless of both camera and character rotation.

When Look In Move Direction is enabled, nonzero movement input rotates the character toward the input direction relative to the top-down camera. With no movement input, the current yaw is retained. When it is disabled, the Movement Type asks the attached View Type for a look direction from Head and rotates toward that result.

Choose cursor or controller aim

The Top Down View Type selects the paths below using cursor visibility and the input provider’s ControllerConnected property. The released Unity Input System implementation does not keep that property synchronized: it leaves it false even though IsControllerConnected() returns true. Consequently this View Type stays on pointer aiming with that implementation, even with a hidden cursor and a gamepad. Twin-stick aim requires a corrected provider that reports controller state consistently; hiding the cursor or remapping look axes alone cannot fix this limitation.

Input state Facing source What to verify
Cursor visible A camera ray through the pointer, projected onto a plane through Head The character faces the pointer without jitter when it crosses near the character.
ControllerConnected is false The pointer path, even if the cursor is hidden The stored mouse position determines facing. This is also the released Unity Input System behavior despite a connected gamepad.
ControllerConnected is true and cursor hidden Horizontal Look Input Name and Vertical Look Input Name, transformed relative to the camera With a provider that correctly updates this property, the right stick aims independently and retains the last direction inside the dead zone.
Look In Move Direction enabled Character forward from movement-facing logic Cursor and look axes no longer choose character yaw.

The View Type’s Vertical Look Direction can use a physics hit to aim items above or below the horizontal plane. It does not change the character’s yaw calculation into a pitch rotation. Configure target colliders, layers, Look Direction Distance, and an anchor above head height when items need vertical aiming.

Choose the correct Top Down variant

Goal Movement Type Setup consequence
Direct keyboard/stick movement with cursor or twin-stick aim Third Person Top Down Keep Look In Move Direction disabled. Twin-stick aim additionally requires an input provider with consistent controller-state reporting; the released Unity Input System limitation is described above.
Direct movement where the character faces travel Third Person Top Down Enable Look In Move Direction; cursor and right-stick aim do not control yaw.
Click a destination and navigate around obstacles Third Person Point & Click Add a Pathfinding Movement ability and Move Towards, bake the navigation data, and keep the cursor available.
Overhead animal or creature controls Third Person Four Legged Its default adds yaw while retaining horizontal movement. Enable Rotate To Face Input Direction to face travel and clear the horizontal component.

All three are recommended pairings for the Top Down View Type, but they do not share movement rules. Point & Click returns no direct movement or yaw request of its own; pathfinding and Move Towards drive travel. Four Legged has its own horizontal-turn and rotate-to-input modes. Diagnose each using its dedicated settings.

Coordinate root motion, items, and abilities

  • Use Root Motion Position lets the animation supply displacement after Top Down chooses input direction. Use clips whose forward, backward, and strafe motion match the Top Down blend tree.
  • Use Root Motion Rotation replaces the Movement Type’s yaw request with the animation’s rotation delta. Leave it disabled when the cursor, right stick, or movement input must rotate the character directly; enable it only when the turn clips own the complete visible rotation.
  • Previous Acceleration Influence has a released default of 1 and is used only when root-motion position is off. If rapid cursor-facing changes rotate carried acceleration and create drift, set it to 0. Do not treat 0 as a universal Top Down requirement when root-motion position is active or retained momentum is intentional.
  • Top Down’s independent-look result tests IsControllerConnected(), while the View Type’s cursor-versus-stick branch tests ControllerConnected. Consistent providers normally allow movement-facing or controller input to own yaw while mouse-facing Aim and Use may also request it. Released Unity Input System returns true from the method but leaves the property false, so independent look and pointer aiming coexist. Test the actual provider, animation, item direction, and hit result together.
  • Movement and item abilities can block or replace positional and rotational input. Confirm ability priority and concurrency when Aim, Use, Move Towards, knockback, or another ability changes the same frame’s movement.

How it runs

  1. Ultimate Character Locomotion Handler reads horizontal, forward, and look input from the active player-input implementation.
  2. Top Down calculates yaw from raw movement input when Look In Move Direction is enabled. Otherwise it requests a look direction from Head through the attached Top Down View Type.
  3. The View Type uses its cached movement-facing state, a cursor ray and projection plane, or camera-relative controller look axes to produce that direction.
  4. Top Down transforms the movement vector relative to the camera when Relative Camera Movement is enabled and clamps diagonal magnitude. When disabled, it returns the input unchanged.
  5. Character Locomotion applies ability input restrictions, animation/root motion, acceleration, gravity, collision, slopes, and the requested yaw or root-motion rotation.
  6. The Top Down View Type positions itself from its anchor, pitch, axes, and distance while continuing to provide character and item look directions.

Editor checkpoint

Before Play Mode, confirm that:

  • Third Person Top Down is active on both character and camera;
  • Relative Camera Movement matches screen-relative versus character-local movement intent;
  • exactly one facing design is intentional: movement, pointer, controller look axes, root motion, or an ability;
  • a generic rig has Head assigned and a humanoid resolves the expected head bone;
  • cursor visibility and the provider’s ControllerConnected property select the intended look path; a gamepad alone cannot select it with the released Unity Input System provider;
  • Use Root Motion Rotation is off when Top Down should own yaw; and
  • non-root-motion characters use a deliberate Previous Acceleration Influence after drift testing.

Verify in Play Mode

  1. Hold each movement direction with Relative Camera Movement enabled. Confirm it follows the screen axes, then rotate or state-change the camera and repeat.
  2. Disable Relative Camera Movement and turn the character. Confirm input now follows the character’s local axes rather than an assumed fixed world axis.
  3. Enable Look In Move Direction. Move in every cardinal and diagonal direction, stop, and confirm the character faces travel without rotating after input returns to zero.
  4. Disable Look In Move Direction, show the cursor, and move it around the character and across the screen edges. The character should face the pointer without jitter near Head.
  5. With a provider that correctly reports ControllerConnected, hide the cursor and sweep both look axes. Aim should remain camera-relative and preserve its last direction inside the dead zone. With released Unity Input System, confirm the documented pointer-path limitation instead.
  6. With consistent device reporting, disconnect the controller while the cursor is hidden and confirm the View Type returns to the pointer path. Decide whether the game should reveal the cursor or provide a custom keyboard aim route.
  7. Test Vertical Look Direction off and on against targets below, level with, and above Head. Character yaw should remain planar while item aim uses the intended height.
  8. For a non-root-motion character, rotate aim sharply while moving and compare Previous Acceleration Influence at 1 and 0. Choose the value that produces the intended momentum without drift.
  9. Test Use Root Motion Position and Use Root Motion Rotation separately. Position clips should travel in the intended direction; rotation clips should not fight cursor or movement-facing yaw.
  10. Equip every relevant item and test Aim, Use, projectiles, throwables, and IK with mouse and controller input. Visible direction and hit direction should agree.
  11. Start every movement-changing ability used by the game. Confirm it blocks or combines with direct input and character rotation as designed.
  12. If the character also contains Point Click or Four Legged, activate each in turn and confirm the camera remains Top Down while movement follows that type’s own rules.

Troubleshooting

Symptom Check Fix
Movement does not follow the screen after the camera rotates. Relative Camera Movement may be disabled or a different Movement Type may be active. Enable it on the active Top Down row and confirm the matching camera is attached as the look source.
Disabling Relative Camera Movement does not produce fixed world directions. Released Version 3 returns unchanged character-local input in this mode. Keep camera-relative movement enabled or implement a custom world-relative transform.
The character faces travel instead of the pointer or right stick. Look In Move Direction is enabled. Disable it and verify the intended cursor/controller look path.
The character jitters or turns unpredictably near the pointer. Head may resolve to the character root or an unstable Transform. Assign a stable head/upper-body Transform and test the pointer crossing close to that position.
The right stick does not aim. Check the provider’s ControllerConnected property, cursor visibility, and look-axis mappings. Released Unity Input System leaves that property false. Use a corrected controller-state provider for twin-stick aim; then hide the cursor and test both look mappings. With the released provider, use pointer or movement-facing controls.
A hidden-cursor setup still aims at the old mouse position. The controller-axis branch requires ControllerConnected to be true as well as a hidden cursor. Keep the pointer available, use movement-facing, or supply a corrected provider/custom View Type. Hiding the cursor does not resolve the Input System state mismatch.
The character drifts when aim changes quickly. A non-root-motion character may carry prior acceleration through the new rotation. Reduce Previous Acceleration Influence, using 0 when no carry is desired; the field does not affect root-motion position.
The character ignores cursor or movement-facing yaw. Use Root Motion Rotation or an active ability may own rotation. Disable root-motion rotation for direct Top Down yaw, or author the complete turn in animation and remove the competing owner.
The item points at a different height than the cursor. Vertical Look Direction, target layers/colliders, Look Direction Distance, or the camera anchor may be unsuitable. Configure the View Type and test the actual item impact layers with the anchor above head height.
Aim or Use rotates differently between input implementations. UseIndependentLook tests the method IsControllerConnected(), while the View Type tests the property ControllerConnected. Verify that the provider reports both consistently; released Unity Input System does not. Then align the item animation and module direction with the intended facing owner.
Point & Click does not move. Point Click needs a Pathfinding Movement ability and Move Towards; it does not use the direct Top Down input. Follow the Point & Click setup and verify navigation, cursor, layers, and ability order.
Four Legged preserves unwanted sideways movement or will not strafe. Check its Rotate To Face Input Direction setting. Its default preserves horizontal input while adding yaw; enabling the option clears horizontal input. Choose that setting or use direct Top Down for the intended controls.
Point Click or Four Legged aim always returns character forward. The Top Down View Type caches the first installed Top Down Movement Type and reads its Look In Move Direction value even when another type is active. Disable Look In Move Direction on the installed Top Down type, or remove that unused type when the other pairing needs cursor/controller look.

Developer reference

The released Version 3 TopDown Movement Type defaults Relative Camera Movement to true, Look In Move Direction to false, and Head to no explicit reference. Initialize resolves the humanoid head from the Animator when possible and otherwise falls back to the character Transform.

GetDeltaYawRotation uses raw movement input and the look source’s up direction for movement-facing yaw. In independent-aim mode, it requests a character look direction from the resolved head position. GetInputVector performs the camera-relative conversion only when Relative Camera Movement is enabled and clamps the result with Vector2.ClampMagnitude.

UseIndependentLook always returns true for non-character look queries. For character look queries, it returns true when Look In Move Direction is enabled, the base force-independent setting is active, or IsControllerConnected() returns true. The View Type instead checks ControllerConnected. Released Unity Input System returns true from the method and disables the polling that populates the property, leaving it false; fix that provider contract before relying on device-based agreement between these two paths.

The Top Down View Type’s AttachCharacter method caches the first installed TopDown Movement Type, not necessarily the active one. Its detailed look-direction method reads that cached instance’s Look In Move Direction value before choosing cursor or controller aim. This is why an inactive Top Down row can affect Point Click or Four Legged when all types are installed on one character.