Я кодирую 2d-платформер в libGDX с Box2D, и я только что понял, что если ваш объект прыгает во время работы, а затем приземляется на поверхность, чтобы продолжить работу, он замедляется примерно на 120% примерно на секунду. Это действительно раздражает, и я не могу придумать решение. Я пытался повысить скорость в течение секунды после того, как игрок упал на землю после прыжка, но, похоже, это не помогло. Вот что я использую для перемещения игрока:
//jumping
if(Gdx.input.isKeyJustPressed(Keys.SPACE) && player.b2body.getLinearVelocity().y == 0){
player.b2body.applyLinearImpulse(new Vector2(0, 4.2f), player.b2body.getWorldCenter(), true);
}
//moving right
if(Gdx.input.isKeyPressed(Keys.D) && player.b2body.getLinearVelocity().x <= 2){
player.b2body.applyLinearImpulse(new Vector2(0.17f, 0), player.b2body.getWorldCenter(), true);
}
//moving left
if(Gdx.input.isKeyPressed(Keys.A) && player.b2body.getLinearVelocity().x >= -2){
player.b2body.applyLinearImpulse(new Vector2(-0.17f, 0), player.b2body.getWorldCenter(), true);
}
Здесь - это видео, показывающее, что происходит.
Я надеюсь, что предоставил правильную информацию, пожалуйста, скажите мне, если я этого не сделал.
РЕДАКТИРОВАТЬ: я также пытался установить положение на оси х с помощью
player.b2body.setLinearVelocity(1f, 0);
но это, кажется, заставляет игрока летать вправо.