Describe the project you are working on
I’m developing a 3D driving game in Godot, focused on realistic car handling and drifting.
The goal is to create a smooth and fun driving experience similar to games like CarX Drift Racing or Need for Speed.
The project is being built with VehicleBody3D and VehicleWheel3D, but it has been difficult to reproduce realistic drift mechanics, especially the handbrake and tire slip control.
I’ve tried adapting logic from a Unity project that uses WheelColliders, but it’s hard to get the same feeling in Godot without rewriting a lot of the physics manually.
Describe the problem or limitation you are having in your project
In my 3D driving game, I’m trying to implement realistic drifting and handbrake behavior using Godot’s VehicleBody3D and VehicleWheel3D.
The problem is that Godot currently doesn’t provide a straightforward way to adjust friction or slip per wheel dynamically, unlike Unity’s WheelCollider.
As a result, it’s extremely difficult to reproduce realistic drift mechanics, and attempts to override physics materials or manipulate wheel properties often lead to errors or unexpected behavior.
This limits the realism and fun of the driving experience, especially for handling high-speed turns and controlled drifts.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
I would like Godot to provide a more flexible wheel physics system for VehicleBody3D, similar to Unity’s WheelCollider.
Specifically, the ability to dynamically adjust friction, slip, and handbrake behavior per wheel at runtime, without causing null references or requiring workarounds.
This enhancement would allow developers to implement realistic drifting and advanced vehicle handling mechanics directly in Godot, improving gameplay quality and reducing the complexity of physics scripting.
It would also make Godot more competitive for racing and driving games, attracting more developers to use it for such projects.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
The proposed enhancement would allow each wheel of a VehicleBody3D to have an adjustable PhysicsMaterial3D or equivalent wheel physics properties directly in the editor and at runtime.
Developers could modify friction, slip, and handbrake response per wheel without causing errors or requiring complex workarounds.
Example Pseudo-Code:
Ideal workflow with the proposed feature
for wheel in vehicle.wheels:
if wheel.is_handbrake_active:
wheel.friction = lerp(1.0, 0.3, handbrake_strength)
else:
wheel.friction = 1.0
Steering adjustment per wheel
vehicle.front_left_wheel.steering = steering_angle
vehicle.front_right_wheel.steering = steering_angle
If this enhancement will not be used often, can it be worked around with a few lines of script?
Currently, it is possible to work around this limitation using complex scripts that manually adjust friction and physics properties per wheel. However, this requires creating custom PhysicsMaterial3D instances at runtime, handling null instance errors, and carefully managing references for each wheel.
This workaround is error-prone, difficult to maintain, and not intuitive for most developers. A built-in feature would simplify this process, making realistic vehicle physics and drifting mechanics accessible without fragile scripts.
Is there a reason why this should be core and not an add-on in the asset library?
This feature requires direct access to per-wheel physics properties and friction handling at the engine level. While add-ons can partially simulate it, they cannot fully integrate with the VehicleBody3D physics in a robust, performant, and reliable way.
Implementing it as a core feature ensures consistent behavior across all projects, reduces the risk of errors, and aligns with how vehicle physics are handled in the engine itself.
Describe the project you are working on
I’m developing a 3D driving game in Godot, focused on realistic car handling and drifting.
The goal is to create a smooth and fun driving experience similar to games like CarX Drift Racing or Need for Speed.
The project is being built with VehicleBody3D and VehicleWheel3D, but it has been difficult to reproduce realistic drift mechanics, especially the handbrake and tire slip control.
I’ve tried adapting logic from a Unity project that uses WheelColliders, but it’s hard to get the same feeling in Godot without rewriting a lot of the physics manually.
Describe the problem or limitation you are having in your project
In my 3D driving game, I’m trying to implement realistic drifting and handbrake behavior using Godot’s VehicleBody3D and VehicleWheel3D.
The problem is that Godot currently doesn’t provide a straightforward way to adjust friction or slip per wheel dynamically, unlike Unity’s WheelCollider.
As a result, it’s extremely difficult to reproduce realistic drift mechanics, and attempts to override physics materials or manipulate wheel properties often lead to errors or unexpected behavior.
This limits the realism and fun of the driving experience, especially for handling high-speed turns and controlled drifts.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
I would like Godot to provide a more flexible wheel physics system for VehicleBody3D, similar to Unity’s WheelCollider.
Specifically, the ability to dynamically adjust friction, slip, and handbrake behavior per wheel at runtime, without causing null references or requiring workarounds.
This enhancement would allow developers to implement realistic drifting and advanced vehicle handling mechanics directly in Godot, improving gameplay quality and reducing the complexity of physics scripting.
It would also make Godot more competitive for racing and driving games, attracting more developers to use it for such projects.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
The proposed enhancement would allow each wheel of a VehicleBody3D to have an adjustable PhysicsMaterial3D or equivalent wheel physics properties directly in the editor and at runtime.
Developers could modify friction, slip, and handbrake response per wheel without causing errors or requiring complex workarounds.
Example Pseudo-Code:
Ideal workflow with the proposed feature
Steering adjustment per wheel
If this enhancement will not be used often, can it be worked around with a few lines of script?
Currently, it is possible to work around this limitation using complex scripts that manually adjust friction and physics properties per wheel. However, this requires creating custom PhysicsMaterial3D instances at runtime, handling null instance errors, and carefully managing references for each wheel.
This workaround is error-prone, difficult to maintain, and not intuitive for most developers. A built-in feature would simplify this process, making realistic vehicle physics and drifting mechanics accessible without fragile scripts.
Is there a reason why this should be core and not an add-on in the asset library?
This feature requires direct access to per-wheel physics properties and friction handling at the engine level. While add-ons can partially simulate it, they cannot fully integrate with the VehicleBody3D physics in a robust, performant, and reliable way.
Implementing it as a core feature ensures consistent behavior across all projects, reduces the risk of errors, and aligns with how vehicle physics are handled in the engine itself.