How do I create a first-person controller from scratch?

I know there is a standard assets one but i would love to learn how to make one from scratch thanks in advance.

I’d suggest that you start by looking closely at (and understanding) the provided, standard asset. That will at least give you a basic understanding of how it works and the situations it needs to handle. From there, you’ll need to decide what features/functions you want to work differently than the standard asset and decide how to make those changes.

Obviously, you could simply tweak the standard asset, take code from it as needed, or write everything yourself.

Writing a good FPC from scratch is a fairly large undertaking. It certainly would be a great learning experience, but be warned that it won’t be simple.