C# 使用Vector3==运算符比较向量的单位
我在这里尝试做的基本上是当玩家移动时,它选择一个目标位置,updateWalkCycle更新角色的位置,直到它是==到targetPosition。然而,这种情况似乎从未发生过。API说==和!=也应该考虑接近值,所以我不完全确定是什么错 我已经检查了Debug.Log,当值为ie时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
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