Is it better to make the Player in FPS be a Rigidbody or a characterController?

I’m no longer sure. Most of the Video tutorials about FPS games use a characterController.
But some others say that it’s not realistic and it’s better to use a rigidbody so it has physics.

In my case, it’s a fight and interact and do stuff kind of game. so at times my character can be pushed back and knocked down, it should respond as a physics object instead of just a simple charactercontroller that does nothing.

But then witha rigidbody, i’m having trouble even keeping leveled. i’ve tried moving using this and it makes my character wobble or rotate at times.

    void Update () {
	   transform.Translate(0, 0, 0.1f, Space.Self );
	}

That kind of works except the character kinda acts like a BALL because it gradually changes direction for some reason, instead of just walking forward dit starts turning to one side and sometimes it falls over. So it’s kinda imitaing being a ball.
I guess it’s cause it’s rigidbody.

So what can i do? Use CharacterController instead?

You can still use rigidbody, but disable the rotation. If you look at the rigidbody component, you’ll see a drop down that says “Constraints”. If you let your scripting rotate it, you can lock the X, Y, and Z from rotation.