在Unity(C#)中实现角度限制,有一个坑点(角度换算),相信大多数人都遇到过,本文会对其探究,同时补充点相机角度控制的算法。
1. 通过角度换算来实现角度限制
假设世界空间中存在一游戏物体Object,左手坐标系,以Z轴为朝向,如果属性面板中Rotator的z值为30,则逆时针旋转30度,如果-30则顺时针选择30度。
z = 30
z= -30
很多人受到这个属性面板的影响,在写角度限制代码的时候(假设将角度限制在-30
if (transform.localEulerAngles.z<30f && transform.localEulerAngles.z>-30f){…}
看着是没啥毛病,运行程序,看属性面板,当z开始为负数(0
public float CheckAngle(float value) // 将大于180度角进行以负数形式输出
{
float angle = value – 180;
if (angle > 0)
{
return angle – 180;
}
if (value == 0)
{
return 0;
}
return angle + 180;
}
这样问题就解决了!下面给出完整代码: