Box2D通过加速,以恒定速度运动并最终减速来移动到目的地

时间:2018-10-22 12:19:42

标签: java libgdx box2d

我正在制作一个自上而下的视角游戏,类似于《口袋妖怪》。

我的角色需要移动到鼠标单击的位置。我希望它首先加速到其最大速度,继续以该速度移动,然后在到达目的地时减速回速度0。

我的减速工作如下:

Vector2 linearVelocity = body.getLinearVelocity();
boolean applyForce = false;
if(Math.abs(linearVelocity.x) >= Float.MIN_VALUE * 10) {
    linearVelocity.x *= -10;
    applyForce = true;
}
if(Math.abs(linearVelocity.y) >= Float.MIN_VALUE * 10) {
    linearVelocity.y *= -10;
    applyForce = true;
}
if(applyForce) {
    body.applyForce(linearVelocity, body.getWorldCenter(), true);
}

但是我一直在努力加速并以恒定速度运动。我发现this article很有帮助,但是我的实现只是将脉冲设置为1,1或0,0

Vector2 linearVelocity = body.getLinearVelocity();
linearVelocity.x = body.getMass() * (maxSpeed - linearVelocity.x);
linearVelocity.y = body.getMass() * (maxSpeed - linearVelocity.y);

body.applyLinearImpulse(linearVelocity, body.getWorldCenter(), true);

此外,我一直在阅读直接改变倾斜速度的解决方案,但是,这不是我想使用的解决方案。

总结起来,这就是我需要帮助的地方

  • 如何以恒定速度加速?
  • 如何准确地在我的目的地停留?

0 个答案:

没有答案