'Character Controller vs RigidBody for FPS

This is a pretty simple question, but I have not been able to find a definitive answer. I was wondering for a first-person-shooter game should I use a character controller or a rigidbody. I'm still learning about Unity and trying to find the pros and cons of each.



Solution 1:[1]

The key factor in your decision between using a Character Controller and a Rigidbody is what kind of physical interactions your player will have with your environment.

A Character Controller "fakes" a lot of things - that is, you will quickly find that it does not interact properly with Unity's physics simulation. On the other hand, a Rigidbody will always be taken into account during physics calculations (unless marked as Kinematic).

Whether or not this matters will depend on the requirements of the game you want to make: if you're just doing some kind of first-person shooter with minimal actual physical interaction with the environment (just programmatic/scripted actions), then a Character Controller would probably be fine. On the other hand, a physics-heavy puzzler like Portal might require a custom solution with a Rigidbody, because of how important the character's interactions with the environment are.

Solution 2:[2]

If you're doing a retro FPS (any kind of fps actually), Character Controller is your choice. The rigidbody updates on FixedUpdate (50xpersec), while the camera movement will usually update every frame (may be 30 persec, may be144...).

Try it yourself, on your own game, and on other Unity FPS games: try circling around looking on an object. If it stutters, it's probably a rigidbody implementation. No kind of interpolation fix this (if someone find an alternative, please let me know).

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Serlite
Solution 2 Zimbres