C# 加上然后减去向量得到的向量和起始向量不同

C# 加上然后减去向量得到的向量和起始向量不同,c#,unity3d,C#,Unity3d,我试图将一个对象向上移动60帧,然后向下移动60帧,所以它应该回到原来的位置。然而,当我试图这样做时,事情并不是这样。对象的初始位置是(0,1.2,0),在我上下移动它之后,它返回到(0,1.200001,0)的位置。这是我为该对象编写的脚本。该对象是一个带有长方体碰撞器的三维立方体 private float upCounter = 60; private float downCounter = 60; // Start is called before the first frame upd

我试图将一个对象向上移动60帧,然后向下移动60帧,所以它应该回到原来的位置。然而,当我试图这样做时,事情并不是这样。对象的初始位置是(0,1.2,0),在我上下移动它之后,它返回到(0,1.200001,0)的位置。这是我为该对象编写的脚本。该对象是一个带有长方体碰撞器的三维立方体

private float upCounter = 60;
private float downCounter = 60;
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{

    if (upCounter > 0)
    {
        transform.position += new Vector3(0, 0.5f, 0);
    }
    else
    {
        if (downCounter > 0)
        {
            transform.position -= new Vector3(0, 0.5f, 0);
        }
        downCounter--;
    }
    upCounter--;
}
对我的项目来说,这些位置将被精确化是很重要的。 我怎样才能解决它?
无论如何,还是要感谢帮助者。

Unity在其向量中使用浮点数

使用
Mathf.近似值(f1,f2)
这将检查它们是否大致相等,以说明浮点不精确性

如果需要比较两个
Vector3
,例如位置,在操纵它们之后是否相等,请使用
vector1==vector2

执行此操作时,Unity将在每个组件上使用
近似值来测试它们是否近似相等。

Unity在其向量中使用浮点值

使用
Mathf.近似值(f1,f2)
这将检查它们是否大致相等,以说明浮点不精确性

如果需要比较两个
Vector3
,例如位置,在操纵它们之后是否相等,请使用
vector1==vector2

执行此操作时,Unity将在每个组件上使用
近似值
,以测试它们是否近似相等。

Unity使用浮点数表示向量。由于二进制无法完全精确地表示某些值,所以浮点本身不能始终进行精确计算。您需要重新设计项目,这样就不需要浮点值完全相等。为什么现在它们必须完全相等?单位的可能重复表示使用浮点数的向量。由于二进制无法完全精确地表示某些值,所以浮点本身不能始终进行精确计算。您需要重新设计项目,这样就不需要浮点值完全相等。为什么现在它们需要完全相等?可能是