# Limit rotation Smoothly

Hello, I’m making a limitation for the rotation of a car, but when I clamp the rotation and gets to the limit rotation, the object goes to start switching between the limit rotation and 0. Thats my script.

public void LimitarRotacion()
{

``````    if (transform.eulerAngles.x > 25)
{
rotationPosX = Mathf.Clamp(rotationPosX, 0, 24);
transform.eulerAngles = new Vector3(rotationPosX,transform.eulerAngles.y,transform.eulerAngles.z);
}

if (transform.eulerAngles.x < -25)
{
rotationNegX = Mathf.Clamp(rotationNegX, 0, -24);
transform.eulerAngles = new Vector3(rotationNegX, transform.eulerAngles.y, transform.eulerAngles.z);
}

if (transform.eulerAngles.z > 45)
{
rotationPosZ = Mathf.Clamp(rotationPosZ, 0, 45);
transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, rotationPosZ);
}

if (transform.eulerAngles.z < -45)
{
rotationNegZ = Mathf.Clamp(rotationNegZ, 0, -45);
transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, rotationNegZ);
}

}
``````

I think you need to switch the values for Mathf.Clamp.
You are using `0` for min value, `-45` for max value, but `-45` is less than `0`. So `-45` should be the min value, and `0` the max value.
`rotationNegX = Mathf.Clamp(rotationNegX, -24, 0);`
`rotationNegZ = Mathf.Clamp(rotationNegZ, -45, 0);`

Also what is the value of rotationNegX and all the other variables before you call the ifs ?
Try using the current value of `transform.eulerAngles.x` and clamp that to save in `rotationNegX` `rotationNegX = Mathf.Clamp(transform.eulerAngles.x, -24, 0);`
Of course you would have to do that with the other ifs too.

I’ve change it, but it still happen, when it gets to the limit rotation, the goes to 0 automatically.