libgdx-Box2d车身如何检查子弹位置是否达到目标位置?

libgdx-Box2d车身如何检查子弹位置是否达到目标位置?,libgdx,position,box2d,velocity,projectile,Libgdx,Position,Box2d,Velocity,Projectile,下面是我如何使用触摸点将子弹移动到目标位置的链接。 () 我的问题是,如果弹体已到达目标位置,如何停止弹体 我已经尝试了下面的代码,它工作正常 PIXEL_TO_METER = 1/32.0f time step = 1/45.0f, velocity iteration = 6, position iteration = 2 float distanceTravelled = targetDirection.dst(bulletPosition); if(distanceTravelled &

下面是我如何使用触摸点将子弹移动到目标位置的链接。 ()

我的问题是,如果弹体已到达目标位置,如何停止弹体

我已经尝试了下面的代码,它工作正常

PIXEL_TO_METER = 1/32.0f
time step = 1/45.0f, velocity iteration = 6, position iteration = 2
float distanceTravelled = targetDirection.dst(bulletPosition);
if(distanceTravelled >= MAX_DISTANCE){
   // stop
} else {
  // move body
}

但我想让子弹停在目标位置,也不停在最远距离。但是我不知道怎么做。

你需要检查子弹是否靠近你的目标,以表明它已经达到目标

    float distance = targetPosition.dst(bulletPosition);
    if(distance <= DEFINED_PRECISION){
        // stop
        // also you can set the target's position to the bullet here
    } else {
        // move body
    }
如果目标位于
1.5/6
位置,您可以看到,尽管在
第1帧中
子弹还没有到达目标,但在下一帧中它已经通过了它,就像从未检测到碰撞一样。这就是为什么需要定义一些精度。它的值应至少为1帧步长,因此在这种情况下,它应为
1/6

    float DEFINED_PRECISION = 1/6f;

您好,谢谢您的回答,所以如果我使用1/45.0f时间步长。定义的_精度值是多少?还添加了一个问题,在您的示例中,您使用的是targetPosition,而不是TargetDistance。如果im错误,请纠正我targetPosition是否已正常化?targetPosition是位置(矢量)目标的方向,而不是子弹要去的方向-规格化位置的原因是什么?我从touch inputok获取目标位置,因此您应该将触摸位置作为目标保存到某个矢量2变量,或者作为浮点x,y;这就是你的目标位置
    float DEFINED_PRECISION = 1/6f;