今天在做炮管上下抬起放下的时候遇到的问题,之前解决过的,但是同样因为硬盘烧毁不得不来重新解决一下这个问题,上网搜到的代码没法用,在这里记录一下。
起因
因为某种未知的原因,Unity采用的欧拉角度数在上下移动的时候采用的全为正数的形式,造成了我们本次旋转角度限制的困难。
这里把图画一下:
一目了然,这就是造成咱们使用-10,30这个区间没法正常限制范围的原因。
解决方法
要解决这个问题,很明显我们不应该限制旋转的值,因为我们旋转的值还需要被转化成四元数再赋值给物体呢,所以我们的思路就是写一个方法,在方法内部对限制范围的值进行调整。
private float ClampAngle(float angle, float min, float max)
{
if(angle < 180)
{
angle = Mathf.Clamp(angle, -180 , -min);
}
if(angle > 180)
{
angle = Mathf.Clamp(angle, 360 - max, 360);
}
return angle;
}
这段代码先判断一下角度在什么范围内,然后再使用调整后的最大值最小值进行范围限制,最后再重新返回调整后的angle值。
如图所示能正常限制范围: