注意:尽管这个问题是在我使用 Unity 时出现的,但它与 Unity 无关,更多的是关于编程逻辑,所以请不要回避。
我正在使用 Unity 并通过脚本旋转对象。问题是,如果我将它旋转到 180 度,物体不会完全旋转到那么多,并且往往会停在 179 到 181 度之间。因此,为了检查旋转是否完成,我检查旋转角度是否为 targetAngle +/- 1,它有效。
我检查使用
if (transform.eulerAngles.z > lowerLimit && transform.eulerAngles.z < upperLimit)
在哪里
lowerLimit = targetAngle-1;
upperLimit = targetAngle + 1;
现在,当 targetAngle 为 0 时出现问题。在这种情况下,我的脚本检查旋转角度是否在 -1 和 1 之间。但是,-1 应该是 359,所以它需要检查角度是否在 359 和 1 之间.
我该如何实施?换句话说,我想我在问如何实现一个环绕数字系统。
编辑
找到了一种解决方法。如果targetAngle为0,我对待是特殊的。它有效,但不是最优雅的。
if (targetAngle == 0.0)
{
if ((transform.eulerAngles.z > 359.0 && transform.eulerAngles.z <= 360.0) || (transform.eulerAngles.z >= 0.0 && transform.eulerAngles.z <= 1))
{
rotate = false;
}
}
else
{
if (transform.eulerAngles.z > targetAngle - 1 && transform.eulerAngles.z < targetAngle + 1)
{
rotate = false;
}
}