Car keeps turning by itself + wobbling at high speed (VehicleSeat + Constraints system)

Hi everyone,

I’m creating a custom car system in Roblox using VehicleSeat and Constraints, specifically SpringConstraint for suspension and CylindricalConstraint for wheels.

Here are the problems I’m facing:

  • When I press W to drive straight, the car turns slightly on its own, drifting even with no steering.

  • At very high speeds, around 200 studs per second, the car starts to wobble side to side and becomes unstable.

  • Over time, after lots of turning, the car acts slippery and loses stable steering.

Here’s what I’ve tried so far:

  • I lowered the center of gravity by adding a ballast part under the car.
  • I switched from normal wheels to sphere wheels. The visual wheel is just for show, while the sphere serves as the actual physics wheel.
  • I adjusted the stiffness and damping of the SpringConstraint, testing both high and low values.
  • I reset the steering angle to 0 when there’s no input.
  • I limited the steering angle to about 15 degrees.
  • I also tried using a NoCollisionConstraint between the wheels and the body.

Despite these efforts, the same problems continue:

  • The car won’t drive straight without veering off.
  • At high speeds, around 200 studs per second, the car wobbles heavily and is nearly undriveable.

My questions:

  • Is this a CylindricalConstraint axis alignment issue?
  • Do I need anti-roll stabilization (BodyGyro / AlignOrientation)?
  • How do I stop the high-speed wobble while keeping realistic suspension?
  • Any way to reduce the slippery steering effect after multiple turns?

Here are two different scripts: (Sphere version and Normal version)
image_2025-09-05_182510997

Any advice or working examples would be very helpful.

Here file:
Car test by Biem.rbxl (858.8 KB)

1 Like

Easiest fix would be turning the FrictionWeight to something higher, but you could also make the acceleration slower, and make the springs stiffer and maybe make the wheels heavier or your weight part

1 Like

Thanks, that fixed it! Setting the wheel’s FrictionWeight to 100 solved the problem.