Question by 
               HexGamesOfficial · Dec 07, 2018 at 05:22 PM · 
                c#cameraposition  
              
 
              When character looks up he goes up(camera bug)
Hello all, I'm workin' on a project that is completly First Person. I'm working for the first time in a "bigger project" and I did(I literally copy it from a tutorial online) a script for that, my problem is that when I look up the character starts "hoping", the y goes up 0.5, and when I look down he moves a bit slower then normal. I tried and I can't fix it... If someone knows how to fix it I'll be thankfully pleased.
Here's the script:
 public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
 public RotationAxes axes = RotationAxes.MouseXAndY;
 public float sensitivityX = 15F;
 public float sensitivityY = 15F;
 public float minimumX = -360F;
 public float maximumX = 360F;
 public float minimumY = -60F;
 public float maximumY = 60F;
 float rotationX = 0F;
 float rotationY = 0F;
 private List<float> rotArrayX = new List<float>();
 float rotAverageX = 0F;
 private List<float> rotArrayY = new List<float>();
 float rotAverageY = 0F;
 public float frameCounter = 20;
 Quaternion originalRotation;
 void Update()
 {
     if (axes == RotationAxes.MouseXAndY)
     {
         rotAverageY = 0f;
         rotAverageX = 0f;
         rotationY += Input.GetAxisRaw("Mouse Y") * sensitivityY;
         rotationX += Input.GetAxisRaw("Mouse X") * sensitivityX;
         rotArrayY.Add(rotationY);
         rotArrayX.Add(rotationX);
         if (rotArrayY.Count >= frameCounter)
         {
             rotArrayY.RemoveAt(0);
         }
         if (rotArrayX.Count >= frameCounter)
         {
             rotArrayX.RemoveAt(0);
         }
         for (int j = 0; j < rotArrayY.Count; j++)
         {
             rotAverageY += rotArrayY[j];
         }
         for (int i = 0; i < rotArrayX.Count; i++)
         {
             rotAverageX += rotArrayX[i];
         }
         rotAverageY /= rotArrayY.Count;
         rotAverageX /= rotArrayX.Count;
         rotAverageY = ClampAngle(rotAverageY, minimumY, maximumY);
         rotAverageX = ClampAngle(rotAverageX, minimumX, maximumX);
         Quaternion yQuaternion = Quaternion.AngleAxis(rotAverageY, Vector3.left);
         Quaternion xQuaternion = Quaternion.AngleAxis(rotAverageX, Vector3.up);
         transform.localRotation = originalRotation * xQuaternion * yQuaternion;
     }
     else if (axes == RotationAxes.MouseX)
     {
         rotAverageX = 0f;
         rotationX += Input.GetAxisRaw("Mouse X") * sensitivityX;
         rotArrayX.Add(rotationX);
         if (rotArrayX.Count >= frameCounter)
         {
             rotArrayX.RemoveAt(0);
         }
         for (int i = 0; i < rotArrayX.Count; i++)
         {
             rotAverageX += rotArrayX[i];
         }
         rotAverageX /= rotArrayX.Count;
         rotAverageX = ClampAngle(rotAverageX, minimumX, maximumX);
         Quaternion xQuaternion = Quaternion.AngleAxis(rotAverageX, Vector3.up);
         transform.localRotation = originalRotation * xQuaternion;
     }
     else
     {
         rotAverageY = 0f;
         rotationY += Input.GetAxisRaw("Mouse Y") * sensitivityY;
         rotArrayY.Add(rotationY);
         if (rotArrayY.Count >= frameCounter)
         {
             rotArrayY.RemoveAt(0);
         }
         for (int j = 0; j < rotArrayY.Count; j++)
         {
             rotAverageY += rotArrayY[j];
         }
         rotAverageY /= rotArrayY.Count;
         rotAverageY = ClampAngle(rotAverageY, minimumY, maximumY);
         Quaternion yQuaternion = Quaternion.AngleAxis(rotAverageY, Vector3.left);
         transform.localRotation = originalRotation * yQuaternion;
     }
 }
 void Start()
 {
     Rigidbody rb = GetComponent<Rigidbody>();
     if (rb)
         rb.freezeRotation = true;
     originalRotation = transform.localRotation;
 }
 public static float ClampAngle(float angle, float min, float max)
 {
     angle = angle % 360;
     if ((angle >= -360F) && (angle <= 360F))
     {
         if (angle < -360F)
         {
             angle += 360F;
         }
         if (angle > 360F)
         {
             angle -= 360F;
         }
     }
     return Mathf.Clamp(angle, min, max);
 }
}
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                