Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Vector3==运算符比较向量的单位_C#_Vector_Unity3d_Compare_Operators - Fatal编程技术网

C# 使用Vector3==运算符比较向量的单位

C# 使用Vector3==运算符比较向量的单位,c#,vector,unity3d,compare,operators,C#,Vector,Unity3d,Compare,Operators,我在这里尝试做的基本上是当玩家移动时,它选择一个目标位置,updateWalkCycle更新角色的位置,直到它是==到targetPosition。然而,这种情况似乎从未发生过。API说==和!=也应该考虑接近值,所以我不完全确定是什么错 我已经检查了Debug.Log,当值为ie时 Playerpos: (50.3, 60, 0), TargetPos: (50.3, 60, 0), difference: (0, 0, 0) 条件仍然是错误的 void Update() { m

我在这里尝试做的基本上是当玩家移动时,它选择一个目标位置,updateWalkCycle更新角色的位置,直到它是==到targetPosition。然而,这种情况似乎从未发生过。API说==和!=也应该考虑接近值,所以我不完全确定是什么错

我已经检查了Debug.Log,当值为ie时

Playerpos: (50.3, 60, 0), 
TargetPos: (50.3, 60, 0), 
difference: (0, 0, 0)
条件仍然是错误的

void Update()
{
    moveCharacter();
    updateWalkCycle();
}

public void updateWalkCycle()
{
    if ( targetPosition != myTransform.position )
    {
        isMoving = true;

        Vector3 difference = targetPosition - myTransform.position;

        float translation = speed * Time.deltaTime;
        myTransform.position = new Vector3(myTransform.position.x, myTransform.position.y + translation, 0);

        Debug.Log("PlayerPos: " + myTransform.position + " target: " + targetPosition + "diff: " + difference + "bool: " + (targetPosition == myTransform.position));
    }
}

public void moveCharacter()
{
    if (!isMoving)
    {
        if (Input.GetKey(KeyCode.W))
        {
            targetPosition = new Vector3(myTransform.position.x, myTransform.position.y + 1, 0);
        }
    }
}

计算的浮点值不会被截断,并且不会在Debug.Log上显示精确的值。使用Time.DeltaTime计算的速度使值不精确,导致bool返回false