Java LibGDX:移动然后立即停止box2d

Java LibGDX:移动然后立即停止box2d,java,libgdx,box2d,game-physics,Java,Libgdx,Box2d,Game Physics,我在LibGDX做一个项目。 这是一个2d平台游戏。你可以说这就像超级马里奥 这就是我如何将我的玩家移到右边的方法: if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) player.b2body.applyLinearImpulse(new Vector2(0.1f, 0), player.b2body.getWorldCenter(), true); } 当我离开钥匙时,玩家仍在移动。(我想他身体上仍然有“线性冲动”的力量) 我怎样才能让它停

我在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);
}

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

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

@icarumbas这是我设置它的方式:pastebin.com/Kjng1uEf,当按下移动键时,播放器正在运行和停止,运行和停止。。如何修复此问题?@ROSA将此移动:
player2body.getLinearVelocity().x=-12.00f
放入if语句中。我的意思是删除
&&
,如果
,再创建一个
。@Sebastian谢谢你纠正我的语法。正在努力。谢谢你的帮助。它正在按我希望的方式工作。@ROSA很高兴我的回答帮助了你。@icarumbas这是我设置它的方式:pastebin.com/Kjng1uEf,当按下移动键时,播放器正在运行和停止,运行和停止。。如何修复此问题?@ROSA将此移动:
player2body.getLinearVelocity().x=-12.00f
放入if语句中。我的意思是删除
&&
,如果
,再创建一个
。@Sebastian谢谢你纠正我的语法。正在努力。谢谢你的帮助。“它按我希望的那样工作了。”罗莎很高兴我的回答帮助了你。