Realistic Car Controller
Use the Realistic Car Controller integration when an Ultimate Character Controller character should enter a standard RCC vehicle, hand driving control to RCC, and return to normal character control after exiting.
The integration supplies RCCDriveSource. Ultimate Character Controller’s Drive ability handles detecting, entering, seating, and exiting the character; RCC remains responsible for vehicle physics, controls, and its optional vehicle camera.
Compatibility boundary
The released Ultimate Character Controller Version 3 checkout inspected for this page includes RealisticCarController.unitypackage. Its source implements RCCDriveSource against the RCC_CarControllerV4 and RCC_Camera APIs, but the package does not declare a minimum or maximum RCC version.
Realistic Car Controller is now at 5.0.0, a major update released in May 2026. The inspected Opsive bridge predates that release, so its presence in the Ultimate Character Controller package and Integrations Manager does not by itself prove RCC V5 compatibility. Before updating a working project or starting with RCC V5:
- Import RCC and the Opsive bridge into a version-controlled test project.
- Confirm that
RCCDriveSourcecompiles without missing RCC types. - Confirm that the vehicle still contains
RCC_CarControllerV4and that an RCC camera, when used, exposes the API expected by the bridge. - Complete the enter, drive, camera, and exit tests on this page before moving the setup into the production scene.
Do not rename missing RCC types merely to make the bridge compile. Use a bridge explicitly compatible with the installed RCC release or implement a project-owned IDriveSource against that release. Realistic Car Controller Pro uses a different API and the separate RCCPDriveSource integration.
Before you begin
- Create and test a vehicle with RCC alone. It should steer, brake, and use its intended camera before Ultimate Character Controller is connected.
- Create a working Ultimate Character Controller Version 3 character with the Drive ability.
- Add a detection collider or trigger for the vehicle and at least one Move Towards Location for entry and exit.
- Create and assign the Physic Material that RCC uses for the vehicle.
RCCDriveSourcereads and changes its bounciness at runtime, so this reference cannot be empty. - Back up the project before changing RCC or replacing the bridge.
Install the bridge
- Install and verify the intended RCC release first.
- In Unity, select Tools > Opsive > Ultimate Character Controller > Integrations Manager.
- Open Available Integrations and locate Realistic Car Controller. The Integration button opens the setup documentation; it does not import the bridge.
- Download the Ultimate Character Controller Version 3 Realistic Car Controller integration from Opsive Downloads, then import
RealisticCarController.unitypackage. - Allow Unity to compile and resolve the first Console error before continuing.
- Confirm that Add Component offers RCC Drive Source and that the component shows Vehicle Layers, Physics Material, Driver Location, Animator ID, and Use Car Camera Controller.
If the package does not compile with the installed RCC generation, stop at this point. The remaining steps cannot correct an API mismatch.
Set up the vehicle
- Select the vehicle GameObject that owns
RCC_CarControllerV4. Add RCC Drive Source to that same GameObject; the bridge searches there rather than through the parent hierarchy. - Set Vehicle Layers to the RCC physics layers that should ignore Ultimate Character Controller’s SubCharacter layer. The packaged default contains seven masks for project layers 8 through 14. Check the layer names in the current project instead of assuming those numbers still belong to RCC.
- Assign Physics Material. The bridge stores its starting bounciness, sets bounciness to
0while the vehicle is inactive, and restores the stored value while the character drives. - Create a child Transform at the seated position and rotation, then assign it to Driver Location.
- Set Animator ID when this vehicle needs a distinct character entry, seated, or exit animation set. Leave it at
0only when the character Animator is built for that value. - Add one or more Move Towards Location components below the Drive Source GameObject. Place them at valid door-side entry and exit positions.
- Put the vehicle’s detection collider on a layer included by the Drive ability’s Detect Layers and make sure the Drive Source is on that object or a parent.
- Finish the character-side entry, exit, animation, visibility, and item choices on the Drive ability page.
Avoid sharing one mutable Physic Material between independently controlled vehicles until the behavior has been tested. Because the bridge changes the material’s bounciness, one vehicle can affect another vehicle that uses the same runtime material instance.
Choose the camera owner
Use Car Camera Controller is enabled by default.
- Use the RCC camera: keep the option enabled and place one
RCC_Camerain the scene. After entry completes, the bridge disables the character’s Ultimate Character Controller Camera Controller GameObject, enables the RCC camera, and targets the entered vehicle. When exit begins, it switches back to the Ultimate Character Controller camera. - Keep the Ultimate Character Controller camera: disable the option. The bridge leaves both camera systems alone, so configure the active Ultimate Character Controller view type to follow the moving character and vehicle presentation appropriately.
- Multiple local vehicles: the bridge uses the first
RCC_Camerait finds rather than a per-vehicle camera reference. Use one intentional local RCC camera or replace the camera handoff with project-owned logic.
The bridge temporarily disables the RCC camera’s TPS Auto Focus while that camera is inactive and restores the previous value when RCC takes camera control.
Choose character input and item behavior
RCCDriveSource does not translate Ultimate Character Controller input into RCC input. It enables the RCC vehicle controller after the character is seated, at which point RCC reads its own configured controls.
- Use the Drive ability’s input for entering and exiting, and configure steering, throttle, brake, and other vehicle controls in RCC.
- Use Allow Equipped Slots, Can Aim, and Disable Mesh Renderers on Drive to decide whether the character keeps items, can aim, or remains visible while seated.
- Test overlapping bindings deliberately. An input used both to exit and to operate the vehicle can trigger both systems during the same frame.
How it runs
At scene start, RCCDriveSource collects the vehicle’s child colliders, finds RCC_CarControllerV4, records the assigned Physic Material’s bounciness, configures the requested layer collision ignores, and disables RCC vehicle control. If RCC owns the camera, the bridge also disables the found RCC camera.
The Drive ability moves or teleports the character into place. Once entry completes, EnteredVehicle enables the RCC controller, restores the vehicle material’s bounciness, and hands the camera to RCC when requested. Ultimate Character Controller keeps the character aligned to Driver Location and ignores collisions with the colliders reported by the Drive Source.
When a valid exit begins, ExitVehicle disables RCC control, sets the material’s bounciness to 0, restores the Ultimate Character Controller camera when needed, and releases the stored character reference. The Drive ability then completes the character’s exit and restores ordinary locomotion, collision, items, and animation ownership.
Verify in Play Mode
- Start away from the vehicle. Confirm that RCC does not accept driving input before the character enters.
- Approach the detection volume and confirm the Drive ability identifies the vehicle.
- Enter the vehicle. Confirm the character uses the intended Move Towards Location or immediate-entry option and reaches Driver Location.
- After entry completes, confirm that RCC accepts steering, throttle, and brake input and that the character does not push against the vehicle colliders.
- If RCC owns the camera, confirm that the Ultimate Character Controller camera turns off, the RCC camera turns on, and the RCC camera targets the entered vehicle. If Ultimate Character Controller owns the camera, confirm there is still only one active audio listener and intended gameplay camera.
- Test the selected item, aiming, and mesh-renderer behavior while seated.
- Exit at every configured location. Confirm RCC input stops as exit begins, the intended camera returns, and the character can move normally after the exit completes.
- Enter a second time. Confirm the vehicle material, controls, colliders, and camera reset correctly.
- Repeat with every supported input device. For split-screen or networking, repeat for each player and authority role rather than treating a single local test as sufficient.
Troubleshooting
| Symptom | Check | Fix |
|---|---|---|
| The bridge produces missing-type compiler errors | The inspected bridge expects RCC_CarControllerV4 and RCC_Camera; the installed RCC release may expose a different API |
Use a version-matched bridge or implement IDriveSource for the installed RCC release. Do not rename RCC classes blindly. |
RCCDriveSource reports that the RCC controller is missing |
RCC Drive Source and the RCC controller may be on different GameObjects | Put both components on the same vehicle GameObject. |
| Play Mode throws an error while the bridge starts | Physics Material or another required reference may be empty | Assign the vehicle’s Physic Material and Driver Location, then retry in an isolated scene. |
| The vehicle never moves | Entry may not have completed, RCC input may be unconfigured, or another script may keep the controller disabled | Confirm Drive reaches its seated state, then test RCC’s own input setup with the enabled vehicle controller. |
| The vehicle moves before entry | Another component may re-enable RCC after RCCDriveSource disables it |
Give one system ownership of the RCC controller and disable automatic vehicle activation that bypasses the Drive Source. |
| The character collides with or pushes the vehicle | Vehicle Layers may not match the current RCC layer setup | Replace the packaged layer masks with the actual RCC physics layers in this project and retest each collider. |
| The character sits at the origin or faces the wrong way | Driver Location is missing or misaligned | Assign a dedicated child Transform and align its position and forward direction to the seat. |
| The camera does not switch to RCC | Use Car Camera Controller may be disabled, no RCC_Camera may exist, or the bridge may find the wrong camera |
Enable the option, keep one intentional local RCC camera, and verify it can target the RCC vehicle without Ultimate Character Controller. |
| The Ultimate Character Controller camera does not return after exit | The exit may have been interrupted before the bridge callback or another script may control the camera GameObjects | Confirm Drive reaches a valid exit, then trace camera ownership so only one handoff controls each camera. |
| Exiting does nothing | Drive requires at least one clear Move Towards Location even for immediate entry and exit | Add or clear an exit location below the Drive Source hierarchy. |
| Another vehicle’s grip changes | Several vehicles may share the Physic Material whose bounciness the bridge changes | Give independently controlled vehicles separate runtime material instances or replace the shared-material behavior. |
Saving, networking, and multiple players
The inspected bridge does not save vehicle state, select network authority, synchronize RCC input, or replicate camera ownership.
- Save the vehicle Transform, RCC-specific state, damage, fuel, and occupied/unoccupied state through the project’s save system. Restore the Ultimate Character Controller Drive state and camera only through a tested re-entry workflow.
- Let the chosen server or vehicle owner drive the authoritative RCC simulation, then synchronize it through the networking solution used by the project.
- Apply camera and input handoff only for the owning local player. The bridge’s scene-wide
RCC_Cameralookup and GameObject activation are not a split-screen or multiplayer ownership system. - Decide what happens when a player disconnects, dies, unloads the scene, or saves while seated. The bridge contains no recovery policy for those cases.
Related pages
- Drive ability
- Move Towards Location
- Camera Controller
- Input
- Animator parameters
- Integrations
- Realistic Car Controller Pro
- Official Realistic Car Controller documentation
Developer reference
The packaged RCCDriveSource implements IDriveSource and exposes the vehicle GameObject, Transform, child colliders, Driver Location, and Animator ID to the Drive ability. EnterVehicle and ExitedVehicle do not add bridge behavior. RCC control is enabled in EnteredVehicle and disabled in ExitVehicle.
The serialized bridge defaults are:
| Field | Packaged default |
|---|---|
| Vehicle Layers | Seven masks targeting project layers 8 through 14 |
| Physics Material | Unassigned |
| Driver Location | Unassigned |
| Animator ID | 0 |
| Use Car Camera Controller | Enabled |
The bridge calls Physics.IgnoreLayerCollision between Ultimate Character Controller’s SubCharacter layer and every configured vehicle layer. This changes the project-wide runtime layer pair, not only collisions for the selected vehicle.
The current Ultimate Character Controller integration manifest still lists Realistic Car Controller asset ID 16296, and Ultimate Character Controller 3.0.10 release notes record an RCC integration update. Neither source declares RCC V5 support. The exact compatibility boundary for a newer RCC release must therefore be proven by compiling the packaged source and completing the runtime checks above.