C# 加上然后减去向量得到的向量和起始向量不同
我试图将一个对象向上移动60帧,然后向下移动60帧,所以它应该回到原来的位置。然而,当我试图这样做时,事情并不是这样。对象的初始位置是(0,1.2,0),在我上下移动它之后,它返回到(0,1.200001,0)的位置。这是我为该对象编写的脚本。该对象是一个带有长方体碰撞器的三维立方体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
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使用浮点数表示向量。由于二进制无法完全精确地表示某些值,所以浮点本身不能始终进行精确计算。您需要重新设计项目,这样就不需要浮点值完全相等。为什么现在它们必须完全相等?单位的可能重复表示使用浮点数的向量。由于二进制无法完全精确地表示某些值,所以浮点本身不能始终进行精确计算。您需要重新设计项目,这样就不需要浮点值完全相等。为什么现在它们需要完全相等?可能是