Ride lets one Ultimate Character Controller character mount and control another, such as a humanoid rider on a horse. Use Rideable on the mount; Ride does not turn an arbitrary prop or vehicle into a controllable mount.

Before you begin

  • Both the rider and mount need Ultimate Character Locomotion and Ultimate Character Locomotion Handler components.
  • The rider needs animations for approaching, mounting, riding, and dismounting. The mount needs a compatible Animator and movement type, such as a four-legged movement type for a horse.
  • The rider needs Move Towards when it should approach a precise left or right mount point before Ride starts.
  • Decide which equipped items may remain active. The default Ride setup allows no equipped slots during the transition and works with Item Equip Verifier to unequip and optionally restore them.

Set up the rider

  1. Select the rider GameObject.
  2. In Ultimate Character Locomotion, expand Abilities and add Move Towards when the character should approach the mount automatically.
  3. Add Ride below Move Towards. Keep Ride high enough to control lower-priority actions, while leaving critical interrupts such as death or ragdoll above it.
  4. Keep the default Start Type set to Button Down, Stop Type set to Button Toggle, Input Names set to Action, and Ability Index set to 12 when using the included Ride Animator states.
  5. For a proximity mount, set Object Detection to Trigger and set Detect Layers to include the mount’s detection trigger. A newly added Ride otherwise inherits Charactercast from Detect Object Ability Base, which is useful only when its cast and layer settings reliably hit the mount.
  6. Leave Object ID at -1 unless one Ride entry must recognize only a particular class of mount. Ride supports duplicate entries, so separate Object IDs and Animator values can route different mount types to different animations.
  7. Configure Mount Event, Mount Complete Event, Mount Complete State, and Dismount Event as described below.
  8. Enable Reequip Item After Mount when Item Equip Verifier should restore the rider’s previous item after the mount transition.

Set up the mount

  1. Select the mount character and confirm its locomotion, movement type, Animator, and Ultimate Character Locomotion Handler work before adding a rider.
  2. In Ultimate Character Locomotion > Abilities, add Rideable. Keep its Start Type and Stop Type set to Manual, its Ability Index set to 12, and place it near the bottom so the mount’s locomotion abilities can continue to drive movement.
  3. Create a child Transform at the final saddle or seat pose. Match its position and rotation to the rider’s root and assign it to Rideable’s Ride Location.
  4. Confirm Rideable has Left Dismount Collider and Right Dismount Collider assigned. Adding Rideable normally creates Left Dismount Collider and Right Dismount Collider children; use Add Dismount Colliders in the Rideable drawer if they are missing.
  5. Position and size those colliders around the spaces the rider’s left and right dismount animations need. They are disabled as physical colliders at runtime and used as clearance probes against solid-object layers.
  6. Add two Move Towards Location components below the mount: one at the left mounting pose and one at the right. Set each Offset, Yaw Offset, position tolerance, and facing tolerance so the corresponding root-motion clip starts from a stable pose.
  7. Add or identify a detection Collider on the mount or one of its children. For Trigger detection, enable Is Trigger, place it on a layer in the rider’s Detect Layers, and size it to the intended mounting area. Ride finds the parent Ultimate Character Locomotion and its Rideable ability.
  8. If the rider uses Speed Change, add Speed Change to the mount too and match the important speed settings. Ride explicitly starts and stops the mount’s Speed Change with the rider’s; other abilities are not mirrored automatically.

Choose the mount and dismount timing

Mount Event

Mount Event is the point where the rider finishes the root-motion approach and becomes locked to Ride Location.

  • Enable Wait For Animation Event and send OnAnimatorRideMount at the frame where the rider reaches the seat.
  • Disable it and use Duration only when a fixed delay is reliable for every active mount clip.

A newly added Ride defaults to animation-event mode for this trigger. When the event occurs, Ride changes to its riding state, stops using root-motion position, forwards input to the mount, and asks Rideable to use the rider’s colliders for movement collision.

Mount Complete Event and state

Mount Complete Event marks the end of the transition and allows the toggle input to begin a dismount. It defaults to duration mode at 0.2 seconds. Use OnAnimatorRideMountComplete instead when the exact end frame varies between clips.

Mount Complete State defaults to RideMounted. The state activates after mount completion and remains active until dismount starts. Use it for rider properties that apply only while seated, such as IK, item, or presentation changes. Leave the name empty when no mounted state is required.

Dismount Event

Dismount Event releases the rider from the mount and completes both abilities.

  • Enable Wait For Animation Event and send OnAnimatorRideDismount after the root-motion clip has placed the rider safely beside the mount.
  • Disable it and use Duration only when the clip timing is fixed.

A newly added Ride defaults to animation-event mode for this trigger. Ride has no Teleport Enter Exit option: a timer changes when the handoff occurs but does not create a dismount trajectory, so a nonanimated implementation must provide its own safe repositioning before completion.

See Animation Event Trigger for the exact Unity event workflow.

Choose movement, sides, and items

  • Move Towards chooses the closest child Move Towards Location before Ride begins. Ride then determines left or right from the rider’s local position relative to the mount, selecting the matching mount animation branch.
  • Dismount first tries the same side. If that clearance collider overlaps a solid object or is missing, Ride tries the opposite side. The rider remains mounted only when neither side has an assigned, clear collider.
  • During the riding state, the rider’s horizontal, forward, and look inputs are forwarded to the mount’s locomotion handler. The rider is continuously positioned and rotated at Ride Location.
  • Adding Rideable disables ordinary gameplay input on the mount. The mount receives the rider’s forwarded input while occupied; an unoccupied AI mount needs its own non-player control workflow.
  • Reequip Item After Mount restores an item that Item Equip Verifier removed for the mounting transition. Before dismount, Ride waits for the required item unequip and stops Aim.
  • Speed Change start and stop are synchronized when both characters have that ability. Match their Speed Change multipliers and animation expectations; the values themselves are not copied at runtime.

How it runs

Ride accepts only a detected object whose parent hierarchy contains Ultimate Character Locomotion with an available Rideable ability. A Rideable can accept its current rider or one new rider, preventing a second character from mounting while it is occupied.

After Move Towards reaches the chosen left or right location, Ride starts on the rider and Rideable starts manually on the mount. The mount updates before the rider, collision relationships are adjusted, and the rider treats the mount as its moving platform while the mount animation begins.

At Mount Event, Ride enters the riding phase and keeps the rider at Ride Location. The mount receives the rider’s movement and look input. At Mount Complete Event, dismount input becomes available and Mount Complete State activates.

Pressing the toggle input checks dismount clearance, tries the other side when necessary, and waits for item unequip when required. The rider returns to root-motion positioning for the dismount clip. At Dismount Event, both abilities stop, collider ownership and input overrides are restored, the moving-platform relationship is cleared, and normal rider control resumes.

Verify in Play Mode

  1. Approach the mount from the left. Confirm Ride’s inherited Detected Object shows a mount collider and the ability message is available.
  2. Press Action outside the left Move Towards Location. Confirm Move Towards aligns the rider before Ride and Rideable become active.
  3. Confirm both Animators use Ability Index 12 and the left mount branch. At OnAnimatorRideMount, verify the rider settles at Ride Location without sliding or clipping.
  4. Move and look after mounting. Confirm the mount responds to the rider’s input while the rider remains aligned to the saddle.
  5. Confirm the toggle input cannot dismount until Mount Complete Event has occurred and RideMounted is active when configured.
  6. Press Action with the original side clear. Confirm any required item unequips, the matching dismount animation plays, and OnAnimatorRideDismount restores independent control.
  7. Mount again, block the original dismount collider, and confirm Ride uses the opposite side. Block both sides and confirm the rider remains mounted.
  8. Repeat from the right, with Speed Change active, and with Reequip Item After Mount both enabled and disabled.

Troubleshoot Ride

Symptom Check Fix
Ride never detects the mount. Check Object Detection, Detect Layers, the collider, optional Object ID, and whether the collider’s parent has Ultimate Character Locomotion with Rideable. Correct the detector and hierarchy, or use a trigger volume on an included layer for proximity mounting.
The mount is detected but Ride will not start. Rideable may already have another rider, Move Towards may be waiting, or a higher-priority ability may block Ride. Free the mount, verify the approach locations, and correct ability ordering or active state.
The Console reports that a locomotion handler is required. Ride or Rideable cannot find Ultimate Character Locomotion Handler on its character. Add and configure the handler on both rider and mount.
The rider approaches the wrong side or starts misaligned. Check the two Move Towards Locations, their offsets and facing, and which one is closest. Move the locations farther apart and match each pose to its left or right root-motion clip.
The rider never reaches the seat. Mount Event may be waiting for a missing OnAnimatorRideMount, or the clip does not supply the expected root motion. Add the exact event at the seat-contact frame and verify root motion and Ability Index 12.
The rider is seated but cannot dismount. Mount Complete Event may not have completed, an item may still be equipping, or both dismount colliders may be blocked or missing. Add OnAnimatorRideMountComplete or use a duration, finish the item transition, and restore clear collider probes on both sides.
Dismount animation plays but Ride remains active. Dismount Event is waiting for a missing OnAnimatorRideDismount. Add the exact event near the end of every dismount clip or use duration mode.
The rider drops at the saddle after a timer-only dismount. A duration completes the ability but does not move the rider away from the seat. Use a root-motion dismount clip or custom repositioning before the event completes.
The mount does not respond to rider input. Check that Rideable is active, the mount has Ultimate Character Locomotion Handler, and no other script owns its input. Restore the Rideable setup and give the forwarded override exclusive control while mounted.
The rider and mount use different run speeds or animations. Speed Change may be missing on one character or its settings may differ. Add Speed Change to both and match its multiplier and relevant Animator setup.
An item does not return after mounting. Check Item Equip Verifier, allowed equipped slots, and Reequip Item After Mount. Complete the item-verifier setup and enable the option when that item is valid while riding.

Developer reference

Ride exposes MountEvent, MountCompleteEvent, MountCompleteState, DismountEvent, ReequipItemAfterMount, the active Rideable, and references to the rider locomotion and GameObject. The type allows duplicate entries and implements IItemToggledReceiver so dismount can continue after Item Equip Verifier finishes.

Ride and Rideable both use Ability Index 12. Ride’s AbilityIntData is 1 for left mount, 2 for right mount, 3 while riding, 4 for left dismount, 5 for right dismount, and 6 after dismount. Rideable mirrors that value so both Animators can remain synchronized.

Ride registers OnAnimatorRideMount, OnAnimatorRideMountComplete, and OnAnimatorRideDismount. During the riding phase it forwards the rider’s raw horizontal and forward input plus look vector through UltimateCharacterLocomotionHandler, while its position and rotation methods keep the rider aligned to Rideable.RideLocation.

Rideable’s clearance check supports Capsule Collider, Box Collider, or Sphere Collider and queries the mount’s solid-object layers while ignoring triggers. CanMount accepts only the current Ride instance or an unoccupied mount. Custom mount behavior can derive from Rideable and override Mount or Dismounted while preserving the base lifecycle and input cleanup.