我正在使用LibGDX进行项目。
这是一个2D平台游戏。你可以说这就像超级马里奥。

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

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


当我离开钥匙时,播放器仍在移动一点。 (我认为他的身体上仍然有“线性脉冲”力)。

我该如何停止?

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

bdw-我尝试过“ setTransform”,当身体接触其他对象时会出现问题-sahpe出现在屏幕上其余游戏的“之前”(您可以在调试时看到它)

谢谢。

最佳答案

您的方法还可以。我还建议您设置身体的最大速度:

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方法立即停止身体。

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

07-28 11:25