【发布时间】:2011-07-17 10:09:14
【问题描述】:
请注意:尽管这个问题是在我使用 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;
}
}
【问题讨论】:
标签: c# unity3d euler-angles