I’m not just looking for some help with code, I am just looking for some professional advice from programmers. Is it normal to feel like I am not doing something correct at all, and there is a better way to be doing it? How do I overcome this?
I am working on a first person shooter, and I want to make my own first person controller and mouse look scripts. Here my how I have my hierarchy for the controller set up:

Why do I feel like this is incorrect? Here is my script for mouse looking aswell( it works fine ):
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
private Camera cWorld;
private Camera cView;
// Mouse look
private Vector2 mouseInput;
private Vector2 mouseSensitivity = new Vector2(15f, 15f);
private float fCamPitch;
private float fCamYaw;
public void Start () {
controller = GetComponent<CharacterController>();
cWorld = transform.FindChild("World Camera").GetComponent<Camera>();
cView = transform.FindChild("View Camera").GetComponent<Camera>();
}
public void Update () {
updateMouseLook();
}
private void updateMouseLook(){
mouseInput.x = Input.GetAxis("Mouse X");
mouseInput.y = Input.GetAxis("Mouse Y");
fCamPitch -= mouseInput.y * mouseSensitivity.y;
fCamYaw += mouseInput.x * mouseSensitivity.x;
fCamPitch = Mathf.Clamp(fCamPitch, -60, 60);
Quaternion lookRotation = Quaternion.Euler(new Vector3(fCamPitch, fCamYaw, 0));
cWorld.transform.localRotation = lookRotation;
cView.transform.localRotation = lookRotation;
Quaternion playerRotation = Quaternion.Euler(new Vector3(0, fCamYaw, 0));
transform.localRotation = playerRotation;
}
}
This happens to me every time I start a game; I feel like I am doing it all wrong and I just want to quit, even though the script is doing what I want it to. I really just want to overcome this.
