Why do we not always use FixedUpdate?

I’ve been reviewing and taking some notes on some pretty basic tutorials, and I’m being taught the difference between Update and FixedUpdate. My questions is that why don’t we always use FixedUpdate? It’s more reliable since it’s always called at the same interval, so what’s the point in using Update?

For others that may not know the difference: Update runs at the same frequency as the game’s framerate. If you’re getting 100 FPS, then Update() runs 100 times per second. FixedUpdate() runs at a constant 50 FPS to match the physics engine.

There’s nothing inherently wrong with only using FixedUpdate, and it is where physics calculations and changes should go since it matches the physics engine. However if you’re doing things like manually moving non physics objects around and your game runs at a higher framerate, you may notice the movement stutters since there’s frames where nothing moves. Using Update makes sure the movement happens every visual frame.

Also, if you need to use inputs that only trigger when a button is pressed down and not when being held (jumps, single fire weapons, etc), you will likely miss them in FixedUpdate. Things like GetButtonDown/GetButtonUp are only set for one frame of the game when the user presses the button, and go back to false the next frame.

In the end though, it all depends on your game and how you set it up or program it. If only using FixedUpdate works for you, then you’re free to stick with it. Just realize that there are some limitations like missing one frame triggers and possible movement stuttering with non-physics movements.