在下面的代码中,为什么要与float.Epsilon进行比较而不是0?
// Coroutine to move elements
protected IEnumerator SmoothMovement (Vector3 end)
{
// Distance computation
float sqrRemainingDistance = (transform.position - end).sqrMagnitude;
while(sqrRemainingDistance > float.Epsilon)
{
Vector3 newPostion = Vector3.MoveTowards(
rb2D.position, end, inverseMoveTime * Time.deltaTime
);
rb2D.MovePosition (newPostion);
sqrRemainingDistance = (transform.position - end).sqrMagnitude;
yield return null;
}
}
float.Epsilon
不等于0。http://en.wikipedia.org/wiki/Machine_epsilon - Tim Schmelterfloat.Epsilon
通常是一个太小的值。如果他们不试图避免舍入误差,那么他们正在做非常奇怪(很可能也是错误的)或不必要的事情。 - Matthew Watson