Unityの話というか、角度の話です。
transform.eulerAnglesは0°から360°で表現されます。
例えば、-10°を代入したら、次に取得すると350°になっています。
このため、
-45°<θ<45°
で角度に制限をかけたい場合、少し困ります。
0°<θ<45°、315°<θ<360°
で制限をかければいいだけだ、と
思ってしまう方もおられるかと思われますが、
値がどちらにClampされるべきかよくわからなくなってしまいます。
これは-10°が350°となり、情報が減ったためです。
http://answers.unity3d.com/questions/227736/clamping-a-wrapping-rotation.html
ここらへんの方法で180°を境にifで場合分けをしたとしても、
なんだか汚い感じがします。
私はtransform.eulerAnglesに代入しない、他のeulerAnglesを別に保存する方法がきれいだと思いました。
仮に、1つの要素をeulerAngleXとすると
// (-∞ < eulerAngleX < ∞)
private float eulerAngleX;
// eulerAngleXに何か代入する
eulerAngleX = Mathf.Clamp(eulerAngleX, min, max);
transform.eulerAngles.x = eulerAngleX;
ということです。
他に何か良い方法があれば、教えて下さい。