Quick start — Blueprint
Ten minutes. No code, and no animations needed.
1. Make the car mountable
Open your vehicle Blueprint.
- Add Component → ED Mountable. It has no required settings.
- Add Component → ED Mount Point (Seat). Drag it to where the driver sits. The blue box is the seat; the arrow is the direction they face.
- In the seat's details, set Role Tag to
Mount.Role.Driver. - Repeat for each passenger seat, leaving their role tag alone.
For a Character the root is the capsule centre, so the seat wants to be about a capsule half-height above the cushion — 88 cm with the engine defaults. A seat placed on the cushion puts the rider's knees through the floor.
2. Give it doors
Select a seat. Two dashed capsules already appear on either side: the entry points the framework derives from the car's bounds. They work, but they are a guess.
Press Generate Entry Points in the details panel. The dashes become solid, and now you can drag them with the move gizmo.
Colours are live:
| Colour | Meaning |
|---|---|
| Green | A rider fits here, both in and out. |
| Amber | A rider fits, but there is no ground under it for an exit. |
| Red | Blocked. |
Drag one into the car's body and watch it go red. That is the same check the framework runs at runtime.
3. Make the character able to ride
Open your character Blueprint.
- Add Component → ED Rider.
- Add Component → Motion Warping. Only needed once you have get-in montages — but adding it now costs nothing.
That is the whole rider.
4. Wire the key
In the character's Event Graph, on your interaction key:
- Add a Branch on Is Mounted (target: self).
- True → Try Dismount.
- False → Try Mount Nearest.
Or use the single Toggle Mount node, which does exactly that.
Both have two execution pins — Succeeded and Failed. Drag off the Return Value and use Get
Failure Text on the Failed pin to print something meaningful:
Try Mount Nearest → (Failed) → Get Failure Text → Print String
Press Play. Walk to the car, press the key. Your character slides into the seat.
A mount request fails often, and for reasons your game cares about: too far, seat taken, seat locked, every door blocked. A boolean return invites people not to check, so the node has two pins.
5. Drive it
By default the controller stays on your character, so the vehicle receives no input of its own — you forward it.
On your movement input event:
- Branch on Is Seated.
- True → Apply Drive Input on the rider component:
- Move Input: the 2D axis value.
- Throttle:
Max(0, Axis.Y) - Brake:
Max(0, -Axis.Y) - Handbrake: your handbrake boolean.
- False → your ordinary walking.
Then, on the vehicle Blueprint: Class Settings → Interfaces → Add → ED Mountable Interface, and implement Apply Driver Input:
- Set Steering Input =
Move Input.X - Set Throttle Input =
Throttle - Set Brake Input =
Brake - Set Handbrake Input =
Handbrake
on the vehicle movement component.
Set the driver seat's Possession Policy to Possess the Mount and the controller possesses the car the way the engine's vehicle template does. Your existing vehicle input keeps working unchanged. The trade-off is in Camera and possession.
Apply Drive Input is a no-op unless the caller is in a seat tagged Mount.Role.Driver, so a
passenger holding W moves nothing — you do not have to unbind anything when someone sits down.
6. Seats
With more than one seat, add a Request Shuffle Seat node on another key. It moves to the next free seat, wrapping around, and refuses cleanly when there is nowhere to go.
What next
- Locking a seat: Access rules.
- Animations: Animation. The procedural slide keeps working until you have them.
- Multiplayer: it already works. Replication.
- Something wrong:
ED.Mounting.DrawSeats 1in the console, then Troubleshooting.