- Home /
 
               Question by 
               sacajawhoohoo · May 21, 2014 at 02:36 AM · 
                not workingmouselookstuck  
              
 
              Smooth Mouse Script Problems
 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
  
 [AddComponentMenu("Camera-Control/Smooth Mouse Look")]
 public class SmoothMouseLook : MonoBehaviour {
  
     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.GetAxis("Mouse Y") * sensitivityY;
             rotationX += Input.GetAxis("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.GetAxis("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.GetAxis("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 ()
     {            
         if (rigidbody)
             rigidbody.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);
     }
 }
So this is the smooth mouse look script from the wiki, here: http://wiki.unity3d.com/index.php?title=SmoothMouseLook
This is my error, while it works fine, whenever I replace the First Person Controller mouselook with this, I have an issue where when I look straight down or straight up the camera gets stuck for a moment, but if I try to pull back up I can after about a second or two. However, if I continue to try to move the mouse down while it is straight down it will become permanently stuck there.
               Comment
              
 
               
              Your answer
 
 
             Follow this Question
Related Questions
I'm having issues uploading photos in my questions... 1 Answer
Pause menu make unity stuck 1 Answer
Do parent tags always affect children? 1 Answer
Terrain Brush Problem 2 Answers
Unity does not work? 2 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                