Gravity only rigidbody

I want my player’s vehicle to be affected by gravity, yet when it moves, I want it to be by a set speed, and I don’t want it to be affected by other physics. Should I just use the rigidbody for y direction movement, and restrict everything else, spinning and moving through translating? Or should I manipulate the speed through relative velocity?

This is exactly what a characterController is for. Assuming you can’t use it because the collider is the wrong shape (a real capsule collider can be flipped forwards, like a submarine shape, but the charController one is locked into straight up.)

You can’t usefully move an RB with Translate – translate “goes around” physics, going through solid objects, such as tunneling through hills.

Locking the move dirs makes it so the good way to move an RB (setting velocity,) won’t work. It can’t tell between the velocity you set and what collisions give. Constraints just ignore all velocity, and you never move.

The simplest way for an RB to “ignore” being hit is to jack up the Mass. Another way is, suppose you always have your set speed in Vector3 myVel;. Update tweaks that and sets rigidbody.velocity=myVel;. So, any velocity you get from collisions is cancelled next Update.

I haven’t tried this, but you could also add that to OnCollisionEnter. That might immdediately reset “pushed” velocity before it moves you for even that frame.