LibGDX:立即移动然后停止box2d

LibGDX: move and then stop box2d immediately

我正在 LibGDX 从事一个项目。 这是一款二维平台游戏。你可以说它像超级马里奥

这就是我将播放器向右移动的方式:

if (Gdx.input.isKeyPressed(Input.Keys.RIGHT))
    player.b2body.applyLinearImpulse(new Vector2(0.1f, 0), player.b2body.getWorldCenter(), true);
}

当我离开钥匙时,播放器还在移动一点。 (我认为它仍然 "Linear Impulse" 对他的身体 body 施加压力)。

我怎样才能让它停止?

我的问题可以很简单: 在按住键的同时在一个方向上移动 LibGDX 上的物理 body 的最佳方法是什么。当我离开钥匙时,播放器立即停止。

bdw - 我试过 "setTransform" 并且当 body 接触其他 objects 时出现问题 - 再加上 sahpe 来"before"画面中剩余的游戏内容(调试时可以看到)

谢谢。

你的方法没问题。我还建议设置 body:

的最大速度
if (Gdx.input.isKeyPressed(Input.Keys.RIGHT) && player.b2body.getLinearVelocity().x < maxSpeed)
    player.b2body.applyLinearImpulse(new Vector2(0.1f, 0), player.b2body.getWorldCenter(), true);
}

立即使用 setLinearVelocity 方法停止您的 body。:

player.b2body.setLinearVelocity(0f, 0f);