Extend Unity5 FPSController or start from scratch?

I’m making a FPS game that needs a gun with zoom, reload and fire animations, jumping/crouching, etc.

Is the default FPSController a good place to start, and extend the FPSController with some custom scripts?

I see other users creating a Capsule and attaching all the custom movement scripts to it:
example: Unity 3D:First Person Shooter Moving and Looking - YouTube

example: How to construct a simple First Person Controller with Camera Mouse Look in Unity 5 - YouTube

My concern is that the FPSController that comes with Unity5 might not be easy to extend, even though it’s pretty robust.

Some of the functionality I need:

  • Gun that stays in the camera view
  • Weighted gun movement (gun moves around slightly when looking around)
  • Zoomed view down the scope
  • Crouching

For those who have been down this path already, what would you recommend, extend FPSController or DIY controller?

***EDIT:

Thanks for all the collaboration guys, I really appreciate it.

I have been investigating the various strategies to make a good FPS controller with animations, etc. I figured this is such an important part to having a fun FPS that I wanted to make sure I didn’t go down the wrong path up front. After digging through lots of free resources, I have found a couple key points compiled here.

TL;DR: Make a simple Controller first, then extend the UnityFPS controller once you understand what’s going on, finally look into buying a prefab once you know what to look for and what you’ll need in your game.

  • There really isn’t a “right” way to do anything because there are so many ways to achieve similar functionality/look in the FPS.
  • There are many FPS-ready packages available for download that do a lot of the common tasks like handling movement, weapon animations, and various other functionality you may or may not need. The most popular FPS is probably UFPS which is a pretty heavy package (also $80) that does a TON of stuff you will eventually need in your FPS. Their “secret sauce” with how fluid it all looks is by using procedural animations (a spring system that “pushes” and “dampens” forces from player input and movement:Reddit - Dive into anything, you can read about it here: https://docs.google.com/document/d/17Ns3PwlSWg4kqWwnBZ4DRa9n_LMSOe7m3KzMfsPUGBI/pub?embedded=true#h.69r4j1rrvafw
  • If you are interested in making your own FPS or using another FPS package, I would first make a simple FPS controller from scratch from the many tutorials online first. Once you know how to make a very simple FPS, you can start to think about how complex you want your animations to be and your skill level. Sometimes pre-made FPS controllers may seem like the right choice at first but then you quickly hit limitations with how they are implemented and don’t have an easy way to extend…in which case it would have been better to just start your own from scratch.
  • There are several items that really add a nice feel for a FPS weapons, like gun sway (the movement of the gun as you look around and move around), bobbing (slight gun bob when you are idle, head bobbing when you walk etc), Depth of field/Blur on movement effects (these are easy to implement).
  • Let me know if you are interested in making your own FPS controller and I’ll see if I can throw something together on youtube.

Here are the best tutorial resources I found along the way:

Models/Packages I found along the way:

Depends on how proficient you are and what your goals are. If you have never created an FPS controller before and/or have a deadline, then extending the existing one might be better. If you are doing this solely for learning purposes and/or have time to do so, then go for it, write your own. All the features you asked can be extended to the existing FPS controller, but since you have concerns whether extending is easy or not, then I would suggest, start by reviewing the existing controller, and then you’ll have the answer to your question.

I would recommend you to make an entire new one, as i am going to do that too soon.

I am working in a FPS with some friends and we have the same problem: Crouching.
The Standard Character is just a camera and it have a cillinder as a corpse. If you just want it to be a simple cillinder, okay. But as far as i know it is very difficult to modify it so it can crouch unless you have a full rigged character to use combined, so i recommend you to remove the cillinder as corpse and change it to a custom character OR make another character from scratch.

But in the other way, making a gun that stays in camera view isn’t a script thing. Actually, it is very easy to do and you can do it with almost anything. The gun movement is pretty easy to do and the aim thing is too. Actually, i did those two things with the animator only and a simple script =]