我正在用Box2D在libGDX中编写一个2d平台程序,我只是意识到,如果您的对象在运行时跳跃,然后降落在表面上以继续运行,他的速度会降低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);
}
Here是一段视频,显示正在发生的事情。
我希望我提供了正确的信息,如果没有请告诉我。
编辑:我也尝试使用
设置x轴的位置 player.b2body.setLinearVelocity(1f, 0);
但是,这似乎会使玩家向右滑动。