Throwing in the towel - Unity's collision physics have become an impossible blocker for my project

I’ve consistently had collision issues with a Sci-Fi racing game I’m working on (F-Zero style, not WipeOut style like literally everyone else goes for for some reason), with nothing I try fixing it. At a certain point in the level geometry the vehicle ends up just randomly bouncing off the road if it’s travelling at a high enough speed.

Some of the solutions I’ve tried and their results:

  • Reducing bounciness to 0 and setting comparison to minimum: no effect
  • Smoother collision meshes: no effect.
  • Custom “Sticky Road” system that applies an extremely strong downward force on the vehicle when above a certain height over the road: mitigates the effect of the bounce but does not prevent it. Occasionally the bounce happens so quickly that the stickyroad system doesn’t even catch it.
  • Increasing bounce threshold to the highest setting possible: no effect
  • Increasing default contact offset: no effect
  • Decreasing default contact offset: no effect
  • Decreasing default max depenetration offset: fixes the issue but causes other serious issues with phasing through certain parts of the level geometry
  • Changing rigidbody collision settings to discrete: fixes the issue but results in the vehicle phasing through walls at even just 10% of its top speed
  • Changing the scale of the level: no effect plus the game loses its feeling of speed.
  • Changing the fixed timesteps: makes the issue worse
  • Combining meshes via a script: no effect
  • Using Havok for Unity: makes the issue worse

There’s also a couple I’ve seen when doing research that I wouldn’t be able to use:

  • Using a script to prevent unintentional vertical movement: not acceptable as this would prevent the kind of 3D movement I’m trying to implement.
  • Convex colliders: not acceptable due to level design having rounded sections of track
  • Using box colliders instead of mesh colliders: could work in theory, but in practice the shear amount of colliders needed to make this work would cause more issues than it solves and also massively slow down workflow to an unacceptable degree.

Honestly, at this point I’m at the end of my rope. If anyone has any suggestions I could try, feel free to put them here. I’m desperate for anything. But over the course of development I’ve become increasingly convinced that Unity just isn’t suitable for this kind of project. Honestly, this kinda explains why you don’t see more Sci-Fi racers in this engine, and even when you do they’re always a slower, floatier WipeOut-style game rather than a faster, tighter F-Zero style game.

Just a quick update, I think I may have completely missed what should have been obvious. The way the collision meshes overlap, they’re supposed to transition into each other in a way that prevents the vehicle from interacting with a hard edge. But in actuality the overlap just isn’t big enough. Turns out that it was bouncing exactly where one of the meshes begins, rather than at the actual joint.

Now I feel stupid. But hey, at least it means this isn’t so much of a blocker anymore.

Wait, are you using standard Physics or DOTS physics? Because Havok is available in DOTS physics only.