Limiting Rotation

Hey all,

Does anyone know about the ability to limit how far an object can rotate in free space if you have control over it?

I don’t have a character controller… I simply have applied a script to my object because I’m already using a rigidbody.

It is flying in the air, as a glider, and I only want it to be able to tilt over so far. At the moment you can rotate it 360 degrees like a cartwheel, but I would like to lock it at a certain point.

Any info / examples?

Thanks

http://unity3d.com/support/documentation/ScriptReference/ConfigurableJoint.html

It allows you to limit rotation, movement, and just about everything else you can think of :).

If you’re using euler angles, its common to use Mathf.Clamp().

For instance, in the default mouse orbit script they use a function called ClampAngle to limit the rotation on the y axis so you can’t spin around in circles. Here’s a truncated version for illustrative purposes:

public var rotSpeed : float = 120.0;
public var yMinLimit : float = -20;
public var yMaxLimit : float = 80;

private var yRot : float = 0.0;

function Start(){
    var angles = transform.eulerAngles;
    yRot = angles.y;
}      

function Update(){

    yRot -= Input.GetAxis("Mouse Y") * rotSpeed * 0.02;
    y = ClampAngle(y, yMinLimit, yMaxLimit);
    
    transform.rotation = Quaternion.Euler(y, 0, 0);
		
}

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

EDIT: Deleted my post. Legend answered the same thing while I was posting mine

thank you so much for the fast responses guys!