Help needed with car physics. [Constraints and Properties]

I am currently using the method of making suspension-cars via constraints.

I’m having difficulty with fine tuning things such as: Suspension and Drift.

General info on the car

The cars use spring, Cylindrical and Hinge constraints.

The car’s wheels and body don’t collide for obvious reasons,

This is how the constraints are set up. Trying to mimic as closely as possible the default roblox suspension car.

Here’s also a quick video on how the car drives (The truck has better handling than the blue car):


The suspension is too stiff, the wheels don’t push up into the car when driving up on a surface.
They’re also glitchy and often can cause the car to glitch into the ground.


These are the properties i am using, The possibility that the slider on the cylindrical constraint not working is ruled out also.


At the moment, The drifting is just changing the Upper and Lower angle of the hinge constraints responsible for the steering. (You hold shift to steer)


These are the properties of the hingeconstraint.

The tires have custom physical properties enabled also to grip onto the road and allow smooth steering.
In efforts to make the car steer better, The torque on the front wheels are stronger to the ones on the back.

Tire’s Custom Physical Properties

Front wheel motor’s properties, The back motors have a torque of 7,500

In addition, I am handling the driving from a server-script:

elseif cart and cart:FindFirstChild("Chassis") then
		local Speed = cart:FindFirstChild("Speed").Value
		if Drift then
			cart.RS.LowerAngle = -60
			cart.RS.UpperAngle = 60
			cart.LS.LowerAngle = -60
			cart.LS.UpperAngle = 60
			cart.RS.LowerAngle = -30
			cart.RS.UpperAngle = 30
			cart.LS.LowerAngle = -30
			cart.LS.UpperAngle = 30
		if not (cart.Chassis.Position.Y > (cart.Chassis.Position + cart.Chassis.CFrame.UpVector).Y) then
		if Steer.Y > 0 then
			cart.RS.TargetAngle = cart.RS.UpperAngle
			cart.LS.TargetAngle = cart.LS.UpperAngle
		elseif Steer.Y < 0 then
			cart.RS.TargetAngle = cart.LS.LowerAngle
			cart.LS.TargetAngle = cart.LS.LowerAngle
			cart.RS.TargetAngle = 0
			cart.LS.TargetAngle = 0
			if Throttle ==,0,0) then
				cart.BLM.AngularVelocity = Speed
				cart.BRM.AngularVelocity = Speed
				cart.FLM.AngularVelocity = Speed
				cart.FRM.AngularVelocity = Speed
			elseif Throttle ==,0,0) then
				cart.BLM.AngularVelocity = 0
				cart.BRM.AngularVelocity = 0
				cart.FLM.AngularVelocity = 0
				cart.FRM.AngularVelocity = 0
			elseif Throttle ==,0,0) then
				cart.BLM.AngularVelocity = -Speed / 3 
				cart.BRM.AngularVelocity = -Speed / 3
				cart.FLM.AngularVelocity = -Speed / 3
				cart.FRM.AngularVelocity = -Speed / 3

If you want to test the cars out yourself here is the game link:

1 Like

so if u followed the toturial of roblox, then u have a script named “DriveScript” in that script u have a variable named SteerAngle or something like that, lower that number so it will fit the steering.

I didn’t fully follow the roblox tutorial, I’ve only used their adivice on the constraints,. I just don’t know how to fine-tune the values of the constraints.

The script is now included in the OP