Steering Wheel Support (Logitech & Others)
This document covers using physical steering wheels with RCC: Logitech G29, G27, G923, G920, Thrustmaster T300, Fanatec, and any other USB / Bluetooth steering wheel that exposes itself to the operating system as a generic input device.
The Unity Input System is what makes this work. RCC doesn't ship Logitech-specific or Thrustmaster-specific code — it works with anything the Input System recognizes.
Will My Wheel Work?
If your wheel works with other Unity games that use the Input System, it'll work with RCC. To test:
- Plug in the wheel.
- Open Unity.
- Open Window → Analysis → Input Debugger.
- Find your wheel in the Devices list.
If it shows up with named axes (Wheel, Throttle, Brake, Clutch, Stick), you're good. If it doesn't show up, or only shows up as a generic "USB Joystick," you may need drivers.
Wheels Known to Work
| Brand | Models |
|---|---|
| Logitech | G27, G29, G920, G923 (Force Feedback) |
| Thrustmaster | T150, T248, T300, T500 |
| Fanatec | CSL, Clubsport (via Fanatec drivers) |
| Hori | Racing Wheel for PlayStation, RAP4 Kai |
Wheels That May Need Setup
| Brand | Notes |
|---|---|
| Older Logitech (Driving Force, MOMO) | Install Logitech G HUB or LGS drivers first. |
| Generic USB wheels | May appear as "Joystick" with no named axes. Manual binding required. |
Setting Up a Logitech G29 / G923
These are the most common wheels — let's use them as the example.
Step 1 — Install Drivers
Download and install Logitech G HUB from logitech.com. This gives Windows / macOS a recognized driver for the wheel.
After install:
- Plug in the wheel.
- Open G HUB. Verify the wheel is detected (shown with its model name).
- Calibrate the wheel from G HUB (center, full lock, pedal range).
Step 2 — Open the Input Actions Asset
In Unity, open:
Assets/RealisticCarControllerV4/Resources/RCC Assets/RCC_InputActions.inputactions
The Unity Input Actions editor opens.
Step 3 — Bind Steering to the Wheel Axis
- Expand the Vehicle action map.
- Click Steer.
- Add a binding: click + next to the action name.
- In the binding settings, click Path and search for
wheel. - Pick Logitech G29 / Steering Wheel (or whichever path matches your device).
- Save.
The exact path depends on which version of the Input System you're on. As of Input System 1.5+, Logitech wheels show up under Other Wheels / [Wheel Name].
Step 4 — Bind Pedals
Repeat for Throttle and Brake (and Clutch if your wheel has one).
Each pedal is a separate axis on the wheel device.
Step 5 — Test
Press Play in any demo scene. Turn the wheel — the car should steer. Press throttle / brake pedals — the car should accelerate / brake.
If steering is reversed (turning left makes the car go right), open the steering action's bindings and add an Invert processor. Same for inverted pedals.
Force Feedback
RCC doesn't ship force feedback (FFB) support out of the box. The Unity Input System has experimental FFB APIs, but they're not stable yet for wheels.
If you need FFB:
- Install the Logitech G Steering Wheel Plugin for Unity (search the Asset Store or Logitech's developer site).
- The plugin exposes FFB calls (
LogitechGSDK.LogiUpdate(),LogitechGSDK.LogiPlayConstantForce(), etc.). - Write a bridge script that subscribes to RCC events and triggers FFB effects:
void OnEnable() { RCC_Events.OnRCCPlayerCollision += OnCollision; }
void OnDisable() { RCC_Events.OnRCCPlayerCollision -= OnCollision; }
void OnCollision(RCC_CarControllerV4 vehicle, Collision collision) {
// Play a strong constant force pointing in the collision direction
LogitechGSDK.LogiPlayConstantForce(0, 100);
// ...
}
This is outside RCC's scope but is well-documented in Logitech's plugin docs.
For tire grip feedback (the constant tug of the wheel resisting your turn), you'd compute the wheel's slip from RCC_WheelCollider and feed it into FFB. Again, outside RCC's core scope but quite achievable.
Thrustmaster Setup
Same flow as Logitech:
- Install Thrustmaster Control Panel (their official driver).
- Calibrate the wheel in the control panel.
- In Unity's Input Actions asset, bind Steer / Throttle / Brake / Clutch to the wheel's axes (path:
<HID>/Thrustmaster T300RS).
Thrustmaster wheels also support FFB but require their SDK.
Fanatec Setup
- Install Fanatec Driver for your specific wheel.
- The wheel is recognized as a generic HID device — bindings work the same as Logitech and Thrustmaster.
Fanatec FFB requires the Fanatec SDK.
Pedal-Only Devices
If you have a separate pedals set (Logitech G Pro Pedals, Heusinkveld Sprints, Fanatec Clubsport Pedals), they show up as a separate HID device.
In the Input Actions asset, bind throttle / brake / clutch to the pedals' specific axes (look for "Pedals" or your device's name in the Input Debugger).
H-Pattern Shifter
If you have a Logitech Driving Force Shifter or similar h-pattern shifter:
- The shifter is a separate HID device, usually a Logitech Driving Force Shifter.
- Each gear is a separate button.
- Bind each button to your custom action (Gear 1, Gear 2, Gear 3, etc.) — RCC's default action set doesn't have these by name, so you'd add them.
To engage a specific gear in code:
carController.ShiftToGear(2); // shift to 2nd gear
Wire each shifter button to call ShiftToGear with the matching gear index.
Handbrake / E-Brake
Some racing setups have a separate handbrake lever. Bind the lever axis or button to the Handbrake action in the Input Actions asset.
Calibrating the Steering Range
Most wheels are 900° lock-to-lock by default. RCC's vehicles use a smaller effective range — typically 80° (40° in each direction) at low speed. To calibrate:
- In the Input Actions asset, find the Steer action.
- Add a Scale processor.
- Set the factor to
(40 / 450)≈ 0.089 to map 900° of wheel rotation to 80° of vehicle steer.
Or, leave the scale at 1.0 and let RCC_CarControllerV4.steerAngleCurve handle the mapping — the curve clamps based on speed.
Test which feels better for your players.
Dead Zones
Most wheels have a tiny dead zone at center. The Input System's Stick Deadzone processor (default min 0.125, max 0.925) handles this. If you want a more precise dead zone:
- Find your Steer action's binding.
- Add a Stick Deadzone processor.
- Set min to ~0.02, max to 1.0.
Lower min = more precise center. Higher min = less twitchy.
Common Wheel Issues
"The wheel doesn't appear in the Input Debugger"
The wheel needs OS-level drivers. Install Logitech G HUB / Thrustmaster Control Panel / Fanatec Driver.
If drivers are installed and the wheel still doesn't appear, try a different USB port or restart Unity.
"The wheel works but the steering is too fast / too slow"
Adjust the Scale processor on the Steer binding. Or adjust RCC_CarControllerV4.steerAngleCurve.
"The pedals are inverted (released = full throttle)"
Add an Invert processor to the pedal's binding.
"Force feedback isn't working"
RCC doesn't ship FFB. Use Logitech's / Thrustmaster's / Fanatec's official Unity plugin and bridge to RCC events.
"The clutch pedal doesn't do anything"
Make sure carController.automaticClutch is off. If automatic clutch is on, the controller manages the clutch internally and ignores the player's clutch input.
Also bind the clutch pedal to the Clutch action in the Input Actions asset (it may not be bound by default).
"Rumble / vibration works on a gamepad but not the wheel"
The Input System's Gamepad.SetMotorSpeeds() works on gamepads, not wheels. Wheels use FFB which is a different API entirely.
Useful Resources
- Unity Input System documentation
- Logitech G Steering Wheel Plugin for Unity — for FFB.
- Thrustmaster Developer Resources.
Next Steps
- 16 — Input System — the general Unity Input System setup.
- 17 — Overriding Inputs — feeding custom values bypassing the wheel.
- 24 — Events System — events to bridge to FFB triggers.