我正在制作一个自上而下的视角游戏,类似于《口袋妖怪》。
我的角色需要移动到鼠标单击的位置。我希望它首先加速到其最大速度,继续以该速度移动,然后在到达目的地时减速回速度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);
此外,我一直在阅读直接改变倾斜速度的解决方案,但是,这不是我想使用的解决方案。
总结起来,这就是我需要帮助的地方