Unity3d 计算出的第一个速度球没有到达它应该到达的目标

Unity3d 计算出的第一个速度球没有到达它应该到达的目标,unity3d,physics,motion,projectile,kinematics,Unity3d,Physics,Motion,Projectile,Kinematics,在下面的函数中,球和目标之间的距离为 已知(R)。此外,合成向量和x轴之间的角度为 已知(发射角度)。由于这些参数(R、启动角度),我 计算球的初始速度。我检查了所有的值。 根据物理学,它们都是正确的。尽管所有的计算 如果正确,球不会击中目标 球的第一个位置 在二维运动之后,它在目标之前被击中 我用下面的代码更改了前3行。问题解决了 Vector3 projectileXZPos = transform.position; Vector3 targetXZPos = Targe

在下面的函数中,球和目标之间的距离为 已知(R)。此外,合成向量和x轴之间的角度为 已知(发射角度)。由于这些参数(R、启动角度),我 计算球的初始速度。我检查了所有的值。 根据物理学,它们都是正确的。尽管所有的计算 如果正确,球不会击中目标

球的第一个位置

在二维运动之后,它在目标之前被击中
我用下面的代码更改了前3行。问题解决了

    Vector3 projectileXZPos = transform.position;
    Vector3 targetXZPos = TargetObjectTF.position;
    float dist = Vector3.Distance(projectileXZPos, targetXZPos);
    transform.LookAt(targetXZPos);

也许我理解错了,但似乎目标已经确定了?它会在目标之前停止吗?有没有太大的对撞机?根据角度,它有时停在目标之前,有时停在目标之后,有时停在精确的目标上。但每次都应该停在目标上。有一个对撞机。刚体是否使用不同的物理?根据物理计算,它每次都应该击中目标。但它击中了我计算的其他地方??轴上的停止点之间的差异是什么?比如有时候它停在10.000134f,有时候停在10.000256f?数字只是一个例子,但我所经历的是处理精确性是很困难的。可能尝试将位置和数字固定到.00f,这可能会有所帮助。差异并不小。它就像10f和-13f。
    Vector3 projectileXZPos = transform.position;
    Vector3 targetXZPos = TargetObjectTF.position;
    float dist = Vector3.Distance(projectileXZPos, targetXZPos);
    transform.LookAt(targetXZPos);