Third Person Adventure gives an exploration character camera-relative travel without a permanent strafe stance: orbit the camera independently, then press a direction to turn the character toward it and move forward. Choose it when free exploration matters more than always facing the camera, and pair it with the Third Person Adventure View Type.

Use Third Person Combat for a character that should continually face the camera’s gameplay look direction, or Third Person RPG for separate strafe, turn, rotate, and automatic-movement controls.

Before you begin

  • Start with a working third-person character, player input, and a Camera Controller assigned to that character.
  • Prepare forward locomotion and turning animation. Adventure normally removes lateral and negative processed movement, so ordinary left, right, and backward commands should still look like forward travel after the character turns.
  • If Aim or item use should allow strafing and backing away, also prepare those animations and test their Animator states separately.
  • Decide whether locomotion uses the motor or root motion before tuning turn response. Adventure supplies a travel direction and yaw request; Character Locomotion and the Animator still determine the final motion.

Set up the Adventure pair

  1. Open Tools > Opsive > Ultimate Character Controller > Character Manager.
  2. Select the new or existing character, choose Third from Perspective, and choose Adventure from Third Person Movement.
  3. Complete the character’s model, Animator, input, item, and ability choices. Select Build Character for a new character or Update Character for an existing one.
  4. Select the character root and expand Ultimate Character Locomotion > Movement Types. Confirm Third Person Adventure is present and selected in the Active column. When both perspectives are installed, also choose Adventure in Third Person Movement Type.
  5. Select the camera, assign the character on Camera Controller, and expand View Types. Add Third Person Adventure if needed and select it in the Active column. When both perspectives are installed, also choose Adventure in Third Person View Type.
  6. Verify that the active input setup supplies the character’s horizontal and forward axes and the camera’s horizontal and vertical look input.
  7. Enter Play Mode and test ordinary travel before enabling Aim, Use, root-motion overrides, or state-driven changes.

The released Adventure View Type explicitly recommends the Adventure Movement Type. Keeping both rows active makes camera orbit, movement-facing, and the Inspector’s perspective selections agree.

Understand ordinary movement

Adventure turns the character toward the requested movement direction after rotating that direction by the camera’s Transform. It then converts the processed two-axis movement into forward magnitude. The result is camera-relative travel using forward locomotion instead of a standing strafe or backward pose.

Input Observable result
Forward The character travels in the camera’s forward direction. It does not need to change yaw when it already faces that direction.
Left The character turns toward camera-left and travels forward in that direction.
Right The character turns toward camera-right and travels forward in that direction.
Backward The character turns toward the camera and travels forward toward it. It does not use ordinary backward locomotion.
Diagonal The character turns toward the camera-relative diagonal and travels forward at the requested magnitude.
No movement Adventure requests no movement-driven yaw, so orbiting the camera alone does not turn the character.

Adventure does not force a sprint-scaled component above 1 back to unit input. Its processed forward value is capped at the largest absolute input component, so final speed still depends on active abilities, Animator motion, motor settings, states, slopes, and collisions.

Choose Aim and Use behavior

Adventure deliberately stops converting the processed movement vector in two target-facing situations:

  • An Aim event with inputStart = true preserves the original horizontal and forward values until its matching stop event. Aim sets this flag for a valid input index or Start Type: Automatic. The character can therefore strafe or move backward while the aiming system controls target-facing behavior.
  • An active Use ability also preserves the original values when one of its usable actions is currently rotating a Character Item toward the target. On a Usable Action, the controlling option is Face Target, which is enabled by default in the released source.

These are temporary exceptions. Once the tracked Aim and every target-facing Use have stopped, Adventure resumes forward-only conversion. A scripted Aim with no input index and a non-Automatic start type reports inputStart = false and does not change the tracked Aim state. An Automatic Aim qualifies even when started through code; test scripted aiming with its actual start type.

The controller stores Raw Input Vector before the Movement Type converts anything. During ordinary Adventure travel, the raw vector can still contain left, right, or negative forward input even though the processed Input Vector becomes forward-only. Abilities that read raw input can therefore react to the player’s original command. Do not assume both values will show the same direction while diagnosing an ability.

Choose motor or root-motion movement

Third Person Adventure has no option-specific serialized fields and does not force either root-motion setting. Make the choice on Ultimate Character Locomotion:

  • Leave Use Root Motion Position disabled when the motor should supply displacement. Tune the shared acceleration, damping, and speed-related states for the intended travel response.
  • Enable Use Root Motion Position when the locomotion clips should supply displacement. Forward and turning clips must cover Adventure’s travel relationship without sliding.
  • Leave Use Root Motion Rotation disabled when the controller should apply Adventure’s yaw request directly through the motor.
  • Enable Use Root Motion Rotation only when the animation set supplies compatible turning. Test sharp camera-relative direction changes rather than assuming a forward clip can also turn cleanly.
  • A Usable Action can temporarily request Force Root Motion Position or Force Root Motion Rotation during item use. Treat those as action-specific overrides and verify the transition into and out of each action.

The underlying released fields initialize with both root-motion choices disabled, but the Character Manager, templates, presets, states, or an existing prefab can configure different values. The selected character’s runtime Inspector is the authoritative configuration.

How it runs

  1. Ultimate Character Locomotion Handler reads the character movement axes and asks the active Adventure Movement Type for a yaw change using the attached look source.
  2. With nonzero movement, Adventure rotates the input direction by the camera Transform and requests the shortest yaw change from the character’s current rotation to that direction.
  3. Ultimate Character Locomotion stores the unmodified movement as Raw Input Vector. If positional input is allowed, Adventure then converts the processed vector to forward magnitude unless an applicable Aim or target-facing Use exception is active.
  4. Abilities, effects, Character Locomotion, and the Animator apply the resulting request through their normal priority, root-motion, gravity, slope, collision, and state rules.
  5. In its default configuration, the matching Adventure View Type retains its independent camera yaw. Beginning movement changes the character’s travel-facing, not the camera’s stored orbit.

Adventure requires a look source for its camera-relative yaw calculation. A player character normally receives it from the attached Camera Controller; an AI character needs a suitable local look source. In the Unity Editor, movement with no look source logs an error instead of producing a useful yaw result.

Editor checkpoint

Before Play Mode, confirm that:

  • Third Person Adventure is active on both the character and camera;
  • both-perspective characters select Adventure in Third Person Movement Type and Third Person View Type;
  • the Camera Controller’s Character reference points to this character and provides its look source;
  • horizontal, forward, and camera-look inputs resolve in the active input implementation;
  • the Animator has forward movement and turning coverage, plus strafe/backward coverage for any Aim or Use exception;
  • Use Root Motion Position and Use Root Motion Rotation match the animation set; and
  • each usable action’s Face Target, Force Root Motion Position, and Force Root Motion Rotation choices are intentional.

Compare Adventure, Combat, and RPG

Movement Type Facing and processed movement Choose it when
Adventure Nonzero input turns the character toward a camera-relative direction, then normally becomes forward-only movement. Aim events with inputStart = true (including Automatic Aim) and target-facing Use can temporarily preserve strafe/backward input. Exploration should allow free camera orbit and natural turn-to-travel movement.
Third Person Combat The character continually turns toward the look source and always preserves forward, backward, and strafe input. Camera-facing combat and over-the-shoulder strafing are the default relationship.
Third Person RPG Ordinary movement preserves facing; separate mappings control turn, camera-aligned rotation, and automatic forward movement. The project needs classic RPG-style independent movement and turn controls.

Compare the three with the same character, scene route, camera offset, input device, and root-motion configuration. Otherwise animation or camera differences can hide the Movement Type behavior you are evaluating.

Verify in Play Mode

  1. Stand still and orbit the camera through several angles. The camera should move while the character keeps its current facing.
  2. At each orbit angle, press forward, left, right, backward, and diagonals. The character should turn toward the camera-relative command and travel using forward locomotion.
  3. Alternate quickly between opposite directions. Confirm the turn response is controlled and the character does not slide, snap unexpectedly, or play an ordinary backward pose.
  4. Start Aim through its mapped player input. Move sideways and backward; the processed movement should retain those directions. Stop Aim and confirm the next ordinary movement returns to turn-and-travel behavior.
  5. Test scripted Aim with its configured Start Type. With no input index, a non-Automatic start should not change the Aim exception, while an Automatic start should enable it.
  6. Use one item with Face Target enabled and one with it disabled. The target-facing use should allow the original strafe/backward input while active; ordinary use should keep Adventure’s normal conversion unless another exception is active.
  7. Test locomotion and item actions with the configured root-motion settings. Verify direction changes, action entry, action exit, slopes, moving platforms, and collision rather than checking only an idle animation.
  8. Switch to Third Person Combat and RPG, then back to Adventure. Confirm each pair restores the expected View Type, Movement Type, input behavior, and facing.

Troubleshooting

Symptom Check Fix
Left/right input always strafes instead of turning into forward travel. Aim, a target-facing Use, or a different Movement Type may be active. Stop Aim and Use, then activate Third Person Adventure on the character and retest ordinary movement.
The character faces the camera even while no input is held. Third Person Combat or an item/ability rotation may own facing. Activate the complete Adventure pair and disable other facing overrides while isolating the movement test.
Orbiting the camera does not change the next travel direction. The Adventure Movement Type may have no look source, or the camera may be attached to another character. Assign the correct Character on Camera Controller and confirm the Adventure Movement Type is active before moving.
The Console reports that the character has no look source. The Camera Controller or an AI local look source was not attached. Attach the intended look source before sending movement input.
Aim still uses forward-only movement. Aim may have no input index and a non-Automatic Start Type, may be inactive, or another Movement Type may be selected. Test mapped Aim input first. Automatic Aim also qualifies; for other scripted starts, implement the required movement policy explicitly.
Item use never allows strafing or backward movement. The active usable action may have Face Target disabled or may not currently be using its Character Item as the face target. Enable Face Target on the intended action and verify that action starts through the Use ability.
After one item stops, Adventure still preserves strafe input. Another target-facing Use may still be active. Inspect all active Use abilities and stop the remaining target-facing action; Adventure tracks more than one active Use.
An ability reacts to left/back input although the character moves forward. The ability may read Raw Input Vector, which is captured before Adventure converts the processed input. Decide whether that ability should use raw player intent or processed locomotion, then configure or extend it accordingly.
Turning slides, double-moves, or feels delayed. Root-motion position/rotation may not match the Animator clips, or both animation and motor tuning may contribute an unsuitable result. Test with root motion disabled, then enable position and rotation one at a time and retune the matching clips and shared locomotion values.
The camera recenters behind the character when free orbit should remain. A different View Type or a state may be changing the camera relationship. Activate Third Person Adventure on the camera and inspect active camera states; use RPG only when follow-behind behavior is wanted.

Developer details

The released Version 3.2.0 type is Opsive.UltimateCharacterController.ThirdPersonController.Character.MovementTypes.Adventure. It is serializable, reports FirstPersonPerspective as false, and declares no serialized Adventure-specific settings.

GetDeltaYawRotation uses the look source Transform rotation to convert the normalized horizontal/forward input into world-relative travel, projects that result against the character’s up direction, and returns the clamped local yaw difference. It returns zero when both movement axes are zero.

GetInputVector normally sets horizontal input to zero and replaces forward input with the vector magnitude. Its clamp preserves a component magnitude above 1. While its tracked Aim state is active, or while at least one active Use exposes a non-null FaceTargetCharacterItem, it returns the original processed vector instead. Aim updates that state only for events with inputStart = true, which includes Automatic starts. The Use exceptions are stored in a set, so normal conversion resumes only after every tracked target-facing Use stops.

Adventure registers OnAimAbilityStart as EventHandler.RegisterEvent<bool, bool> and OnUseAbilityStart as EventHandler.RegisterEvent<bool, Use>, then unregisters both in OnDestroy. The first Aim boolean is the start state; Aim sets the second true for a valid input index or Automatic start type. The camera-side Adventure View Type carries recommendation attributes for this Movement Type and Four Legged; the Movement Type itself does not select or switch the camera.