Third Person RPG provides separate controls for forward movement, strafing, turning, camera-aligned rotation, and automatic forward movement. Use it for a follow-behind RPG scheme where the character can move without always facing the camera, and pair it with the RPG View Type.

Before you begin

  • Create a working third-person character with player input, Ultimate Character Locomotion, Ultimate Character Locomotion Handler, and an attached Camera Controller.
  • Choose the input route before assigning names. The supplied Input Manager and Input System configurations separate strafing and turning differently.
  • Prepare forward, backward, strafe, and turning animation coverage. The Movement Type chooses the input and facing request; Character Locomotion still applies animation, root motion, acceleration, gravity, collision, and active abilities.
  • Decide whether the mouse buttons should control the RPG camera or equipped items. The RPG View Type’s supplied free-movement inputs overlap common Aim and Use inputs when enabled.

Build the RPG character and camera

  1. Open Tools > Opsive > Ultimate Character Controller > Character Manager.
  2. Choose Third from Perspective and choose RPG 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 RPG is present and selected as Active. When both perspectives are installed, also select it as Third Person Movement Type.
  5. On Ultimate Character Locomotion Handler, configure Horizontal Input Name for the chosen input route using the table below.
  6. Select the camera, expand Camera Controller > View Types, add and activate Third Person RPG, and select it as Third Person View Type when both perspectives are installed.
  7. Select the RPG Movement Type row and confirm Rotate Input Name, Turn Input Name, Turn Multiplier, and Auto Move Input Name. Test each referenced mapping independently before tuning animation or camera smoothing.

Separate strafe and turn input

Do not give Horizontal Input Name and Turn Input Name the same axis. One name feeds the character’s left/right movement and the other rotates the character.

Supplied input route Horizontal Input Name on the handler Turn Input Name on RPG Supplied keyboard result
Legacy Input Manager Alt Horizontal Horizontal Q/E strafe; A/D turn.
Unity Input System Horizontal Turn A/D strafe; Q/E turn.

The legacy Update Buttons workflow creates Alt Horizontal with Q/E. The released Input System CharacterInput asset does not contain an Alt Horizontal action; it supplies Horizontal on A/D and a separate Turn action on Q/E. The released demo character uses that Input System arrangement. For a custom action asset, the exact keys can differ, but the two UCC fields must request distinct action names.

The supplied Q/E bindings also overlap Equip Previous Item and Equip Next Item. Rebind either turning/strafe or item cycling when the character uses both workflows.

Understand the controls

Control Released Version 3 default Runtime result
Forward/backward movement Handler Forward Input Name is Vertical The character moves along its current forward axis without changing yaw by movement alone. The supplied keyboard mapping is W/S.
Strafe Handler Horizontal Input Name is Horizontal until changed The character moves left or right without turning. Use the input-route table above so this is not also the turn axis.
Rotate Input Name Fire3 While held, the character turns to the attached look source and the paired RPG camera accepts yaw and pitch input. The supplied mouse mapping is the middle button.
Turn Input Name Horizontal on a newly created RPG type The axis rotates the character. The demo overrides this to Turn for its Input System action asset.
Turn Multiplier 1.5 Scales the turn-axis value before it is applied to yaw.
Auto Move Input Name Action Each button press toggles automatic forward movement. The supplied keyboard mapping is F.

Auto move is a toggle, not a hold. While enabled, it forces processed and raw forward input to 1, so pressing backward does not cancel it. Press the mapped button again to stop. Strafing, turning, collision, and ability restrictions still apply during auto move.

Choose the camera behavior

The matching RPG View Type normally follows character rotation. It can also expose two temporary camera modes:

  • Allow Free Movement is disabled by default. When enabled, holding Camera Free Movement Input Name (Fire1 by default) orbits and pitches the camera without turning the character. After release, the yaw offset recenters only when the character moves.
  • Holding Character Forced Rotation Input Name (Fire2 by default) clears the camera’s yaw offset and tells the active RPG Movement Type to turn with the look source. This mode also requires Allow Free Movement.
  • Holding the Movement Type’s Rotate Input Name turns the character with the look source and lets the paired camera accept yaw and pitch. Keep it distinct from the View Type’s two camera inputs so each held mode has one clear purpose.

Fire1 and Fire2 are also common Use and Aim mappings. Rebind the camera modes or the item abilities when a click should not both orbit the camera and use an item.

Scenario choices

Scenario Configuration Expected result
Keyboard RPG controls Use one axis for strafe and another for turn; leave Turn Multiplier near its starting value Forward/back and strafe preserve facing, while the turn axis changes yaw.
Controller movement Create separate strafe and turn actions or composites instead of assigning the same stick axis to both fields Movement and character yaw can be tuned independently without double input.
Mouse-driven character rotation Keep Rotate Input Name on a held button and attach the RPG View Type as the look source The character follows camera look while held, then returns to ordinary RPG turning after release.
Independent camera inspection Enable Allow Free Movement and assign a camera-only button The camera orbits without turning the character, then recenters behind it after movement resumes.
Continuous travel Keep a dedicated Auto Move Input Name that does not overlap an interaction One press begins forward travel and the next press stops it; strafe and turn remain available.
Item-heavy combat Move free camera, forced rotation, turn/strafe, and item cycling onto non-overlapping actions Aim, Use, and equipment changes occur without an unintended camera or movement command.

How it runs

  1. Ultimate Character Locomotion Handler reads the configured horizontal and forward axes into the character’s raw movement input.
  2. The RPG input events track the rotate button, turn axis, and auto-move toggle. The turn value is multiplied by Turn Multiplier.
  3. When auto move is active, RPG replaces both processed and raw forward input with 1. Updating the raw value allows movement abilities to observe the automatic travel request.
  4. RPG preserves the current facing during ordinary forward/back and strafe input. The turn axis adds yaw; held rotate or forced camera rotation also adds the yaw difference between the character and look source.
  5. Character Locomotion applies the resulting request through acceleration, root motion, gravity, collision, slopes, and active abilities. The Movement Type does not move the Transform directly.
  6. The paired RPG View Type follows the resulting character rotation. A stored free-camera offset recenters while the character is moving, according to the View Type’s Yaw Snap Damping.

RPG reports independent look for both character and item queries. Aim and Use therefore do not automatically turn the character in the same way as a camera-facing Combat Movement Type. Item modules may still use the camera ray or their own fire/throw Transform according to their settings, so verify character facing, animation, crosshair, projectile, and hit direction together.

The RPG View Type watches Move Towards separately and follows character rotation while that ability positions the character. Other abilities can block, replace, or scale movement in their normal list order. Root-motion position and rotation remain Character Locomotion choices; RPG supplies direction and yaw, while the animation clip supplies root-motion displacement.

Editor checkpoint

Before Play Mode, confirm that:

  • Third Person RPG is active on both the character and camera;
  • Horizontal Input Name and Turn Input Name are different and both exist in the active input map;
  • Rotate Input Name and Auto Move Input Name resolve to intentional buttons;
  • the Q/E and mouse-button bindings do not collide with item cycling, Aim, or Use unless that overlap is deliberate;
  • Allow Free Movement matches the intended camera design; and
  • forward, backward, strafe, turn, and root-motion animations cover the complete control set.

Verify in Play Mode

  1. Press forward and backward without turn input. Confirm the character keeps its yaw and moves along its current forward axis.
  2. Test strafe and turn separately. Strafe should translate without changing yaw; turn should rotate without also adding sideways input.
  3. Hold Rotate Input Name and move the look input. Confirm the character follows the camera yaw and the camera accepts pitch, then release it and confirm ordinary turn controls return.
  4. Press Auto Move Input Name once. Confirm the character travels forward, can still strafe and turn, and respects walls and active abilities. Press backward to confirm it does not cancel the toggle, then press auto move again to stop.
  5. If free camera movement is enabled, orbit while stationary, release the button, and wait. The offset should remain. Begin moving and confirm the camera recenters behind the character.
  6. Hold Character Forced Rotation Input Name and confirm the camera aligns immediately and the character turns with its look source. Release it and confirm the temporary alignment mode ends.
  7. Equip each relevant item and test Aim, Use, reload, and item cycling. Confirm no shared Q/E, Fire1, or Fire2 binding triggers an unintended movement or camera command.
  8. Compare in-place and root-motion locomotion at walk and run speeds. The character should keep the same RPG control relationship without sliding or double movement.
  9. Trigger Move Towards and other movement-changing abilities. Confirm their positioning, stopping, and camera behavior remain intentional.
  10. If the game switches Movement Types or perspectives, test the switch with auto move both off and on. Returning to RPG should not surprise the player with resumed travel.

Troubleshooting

Symptom Check Fix
Left/right input both strafes and turns. Horizontal Input Name and Turn Input Name request the same axis. Use the matching pair from the input-route table or create two distinct actions.
Alt Horizontal does nothing with the Unity Input System. The released CharacterInput action asset has no action with that name. Keep the handler on Horizontal and set RPG Turn Input Name to Turn, or add a deliberate custom action and binding.
Q/E changes equipment while strafing or turning. The supplied input configurations also bind Q/E to previous/next item. Rebind item cycling or the RPG axis so each key has one gameplay purpose.
Rotate, turn, or auto move never responds. RPG may not be active, the character may have no Ultimate Character Locomotion Handler, or the requested mapping may be absent. Activate the RPG row, verify the handler and Player Input Proxy, and make every input name exist in the active map.
Pressing backward does not stop automatic travel. Auto move is a toggle and replaces forward input with 1. Press Auto Move Input Name again; use a project-specific movement mode if manual backward should cancel it.
The character starts moving when returning to RPG. Released Version 3 keeps the private auto-move toggle when RPG is deactivated. Turn auto move off before switching, or replace this behavior in a project-specific Movement Type when switches must reset it.
Free camera movement or forced rotation does nothing. Allow Free Movement is disabled by default, the mapping is missing, or the RPG View Type is not active. Enable the option on the View Type, verify both camera input names, and activate the complete RPG pair.
The camera does not recenter after free movement. The character may still be stationary. Begin moving; the RPG View Type recenters its yaw offset only during movement.
Clicking aims or uses an item and also moves the camera. RPG camera inputs share Fire1 or Fire2 with item abilities. Assign separate camera and item actions, then retest all equipped items.
Aim does not rotate the character toward the crosshair. RPG uses independent look rather than camera-facing Combat rotation. Use the forced-rotation mode where appropriate, author matching independent-look animation, or choose a camera-facing Movement Type for that design.
Root-motion movement slides or moves at the wrong speed. The animation displacement does not match the requested input or another ability changes the final movement. Tune the locomotion clips and blend thresholds, then inspect active abilities; do not use Turn Multiplier as a movement-speed control.

Developer reference

The released Version 3 RPG Movement Type defaults to RotateInputName = "Fire3", TurnInputName = "Horizontal", a serialized turn multiplier of 1.5, and AutoMoveInputName = "Action". It registers button-down/button-up events for rotate, an axis event for turn, and a button-down event for the auto-move toggle. GetInputVector forces processed and raw forward input while auto move is active; GetDeltaYawRotation combines the current turn-axis value with look-source alignment during rotate or forced-rotation modes.

The public TurnMultiplier property is incorrectly wired to the current turn value in the released Version 3 source instead of the serialized multiplier field. The Inspector’s Turn Multiplier field is read correctly by runtime turning, but code that gets or sets the public property does not read or change that field. Configure the multiplier in the Inspector, or expose the protected multiplier from a project-specific subclass when it must change through code.

Auto move has no public state or explicit reset API, and ChangeMovementType does not clear its private toggle. Projects that require deterministic reset-on-switch behavior should own that policy in a custom Movement Type rather than assuming deactivation stops the stored toggle.