How should I make my cars suspension feel good?

Out of boredom (and picking up Need for Speed: Most Wanted (2012) again), I’ve decided to make a very arcade-like car system.

I’ve managed to develop everything and the system almost feels perfect to drive around in except for ONE thing. The suspension.

I’m no physics major, so this is 100% not my field, I’ve looked at A-Chassis as well, but I have no clue at all how they’ve done their suspension.

For context to how the car is built, I’ve followed this tutorial:

Of course I’ve modified the code a whole bunch, but code can’t fix the fact that I’m not good with physics. I’ve tried solving this for 3 days now, and I’m just not cut out for this.

Physics of the car

Car Base:


(Every detail part is massless)

Wheels:


(Friction varies on front and back wheels to make drifting feel good)

CylindricalConstraint:

SpringConstraint:


Exact Problem

I’m finding the car to not react to bumps as I’d like it to, instead of suspension actually doing suspension things, it instead likes to launch the car into the stratosphere (about 10 studs up) if I hit something at speed like a speed bump.

Another problem is that I want the cars to look realistic, so giving the suspension a LOT of wiggle room (like in the tutorial) isn’t something I want.

Why not just use A-Chassis?

A-Chassis isn’t what I want. A-Chassis is realistic, I don’t want realistic. I also want to develop as much of it myself to learn.


Hope someone can help, thanks.

I think your suspension is over-reacting because your constraints are fighting each other and the spring tuning is off, try this:

  1. The sprngConstraint and CylindricalConstraint are both trying to control travel, when the limits are tight they slam into each other and launch the car
  2. Your stiffness is too high for da mass, and damping is too lowl, so bumps turn into catapults
  3. Wheel friction is too high, so the tires probably grip ereal hard instead of sliding
  4. Remember, elasticity isn’t zero, so parts still bounce a bit on impact

Try this:

  1. Let one one constraint define travel, so just keep the spring for softness and widen or disable the cylindrical limits a little bit

  2. Also, zero elasticity on anything that touches terrain, so:
    Car Base: Elasticity = 0
    Wheels: Elasticity = 0

  3. Now, you gotta tune the spring to be realistic, so start 'round:
    Stiffness = 6000
    Damping = 700
    FreeLength = (wheel attach distance + about 0.8 studs)
    That gives short but a stable travel

  4. Cylinder limits put it so its about ±1 stud from ride height so it’s not sitting on a hard stop

  5. For the wheel friction, try 0.0-1.1 for now

  6. For collision make sure the wheels don’t collide with the chassis (CollisionGroups)

This is all I can think off from the stuff, I didn’t watch the video its a bit too long, bt send your code or if that fixes it