Rigidbody Unwanted Drift

I’m making a simple 3D endless runner game. For now let’s say it’s a character moving forward in a plane with two boxes as side walls. Then I noticed a “bug”. If my character (A car shaped rigid body) collides with the side walls (simple box colliders), sometimes it drifts away on the X axis. Can be both to the left or to the right and in different speeds. It’s hard to debug when it only happens sometimes.

I’ve also written my movement vector on the console to see if it was getting unwanted value but it’s just a Vector3(0,0,0).

The character:

  • Is frozen on all axis rotation.
  • Don’t use gravity.
  • Have a discrete collision detection.

Here’s my code:

void FixedUpdate() {
		rBody.angularVelocity = Vector3.zero;
		moveVector = Vector3.zero;

		// x
        // Unnecessary, I'm using GetRawAxis ("Horizontal");
		if (Mathf.Abs (x) > keyInputDelay)
			moveVector.x = x * hSpeed;
		// y
		moveVector.y = transform.position.y * -1;

		// z
		moveVector.z = 1 * vSpeed;

		moveVector *= Time.deltaTime;
		rBody.MovePosition (transform.position + moveVector);

Ok… So I “Fixed” it by increasing the draft. which means the object will stop it’s weird movement before it is noticeable. Not the best fix but for my game it’s enough.