# Stop rotation of camera at certian degree

Ok so here is my third attempt but with no success. right now it just freezes the game after a few seconds and does not look any where just straight up. Is there something I missing with this? I am basing it off the mouse look at script in the standard assets.
Here is what I have so far: Thanks for any help with this

``````var turnSpeed : float = 15f;

var minX :float = -90;
var maxX : float = 90;

var minY : float = -90;
var maxY :float = 90;

var rotationX : float = 0f;
var rotationY : float = 0f;
var originalRotation : Quaternion;
var xQuaternion : Quaternion;
var yQuaternion : Quaternion;

function Start () {

}

function Update () {

//rotate the comera
//this works
this.transform.RotateAroundLocal(Vector3.up, Input.GetAxisRaw("Vertical") * turnSpeed);
this.transform.RotateAroundLocal(Vector3.forward, Input.GetAxisRaw("Horizontal") * turnSpeed);

if(Input.GetAxis("Vertical"))
{
rotationX += Input.GetAxis("Vertical") * turnSpeed;
rotationX = ClampAngle(rotationX, minX, maxX);
}
if(Input.GetAxis("Horizontal"))
{
rotationY += Input.GetAxis("Horizontal") * turnSpeed;
rotationY = ClampAngle(rotationY, minY, maxY);
}

xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
yQuaternion = Quaternion.AngleAxis (rotationY, -Vector3.right);
transform.localRotation = originalRotation * xQuaternion * yQuaternion;

}

static function ClampAngle(angle :float, min : float , max :float )
{
if (angle < -360F)
angle += 360F;
if (angle > 360F)
angle -= 360F;
return Mathf.Clamp (angle, min, max);
}
``````

You could try making a variable that keeps getting added or subtracted from depending on which way you turn, and only allow the object to keep rotating if the variable is in the allowed range.