Box2D движется к месту назначения путем ускорения, движения с постоянной скоростью и замедления в конце - PullRequest
0 голосов
/ 22 октября 2018

Я создаю игру с видом сверху вниз, что-то вроде Pokemon.

Мой персонаж должен перейти в положение щелчка мыши.Я бы хотел, чтобы он сначала ускорился до максимальной скорости, продолжал двигаться с этой скоростью, а затем, когда достиг конечного пункта, снова замедлился до скорости 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);
}

Но я борюсь с ускорением и двигаюсь с постоянной скоростью.Я нашел эту статью полезной, но моя реализация просто установила импульс на 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);

Кроме того, я читал о решениях, которые меняют наклонСкорость напрямую, однако, это не решение, которое я хотел бы использовать.

Подводя итог, вот в чем мне нужна помощь:

  • Как разогнаться до постояннойскорость?
  • Как остановиться точно в пункте назначения?
...