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