What is the best way to move a character for an FPS?

I recently started learning Unity, and decided to try and make my first ‘game’. The only problem I’m having is deciding how to move my character, there are so many options! Should I use FixedUpdate or Update? Should I use RidgidBody or CharacterControler? There are a lot of possibilities. I haven’t been able to find a definitive answer to this question. All I’m trying to do is create a basic 3DObject that the player can control.

  1. First understand the difference between FixedUpdate and Update. FixedUpdate is used mainly for fixed calculations where as Update is used for all the general calculations. Learn more about the differences between FixedUpdate/Update and Time.DeltaTime and Time.FixedDeltaTime in the unity docs. It is very important you understand what Time.DeltaTime signifies for calculations.

  2. The idea way would be to use Rigidbody, learn basic 3D math and how to use Transformation in Unity, basic introduction to Vector3, Transform.Position, Transform.Rotation (Use Quaternions for rotations) and Input.GetKeyDown commands would help you build a Movement script easily.

  3. Though Character Controller is readymade, comes with collider, jump script etc, I wouldn’t prefer that as over time you might want to modify a lot of code to get desired ability. When you learn the basic 3D math and build things yourself, your knowledge will be deep and any tweaks would take only seconds as you know your code and you know the concepts. If you want to be a programmer learn the concepts and then use readymade content only if needed.

Do a quick search on all the important keywords I mentioned and get started ! If you are a designer/artist don’t go too deep.
Hope this helps.