我正在制作一款游戏,使用LibGDX和LibGDX,它附带的Box2D包装器。具体来说,我的游戏是一个2D sidescroller。与对象碰撞时,Sprite不会掉下来吗?
我的问题是我的玩家精灵。我需要为玩家进行非常精确的移动,所以我决定将其设置为当玩家按下箭头键时,它会调用playerBody.setLinearVelocity()
,然后当他们停止按下键时,它会将其线速度重置为0.
在我的比赛中,我有引力。为了确保在移动左,右玩家落下,我创建的方法run()
:
public void run(float x) {
playerBody.setLinearVelocity(x, playerBody.getLinearVelocity().y);
}
这工作得很好,当我的球员是自由下落。但是,当我的玩家在任何静态物体(包括垂直墙壁)上移动时,只要我按住将箭头贴在墙上的箭头键,它们就会停止坠落。
有谁知道这可能是为什么?提前致谢。
而且,这里是我的摩擦,密度,并为playerBody恢复原状:
friction = 0.1f
restitution = 0.01f
density = 0.4f
这将工作,除了我的精灵似乎在使用您的代码时会变慢。可能是因为它没有考虑到我身体的质量?我尝试了mass * gravity.y,但是这会让它下降得太快。 – user2029675
你正在接受重力的价值是什么?你的box2d世界以米或像素为单位? –
重力是0,-30,我不确定这是米或像素,但它似乎使我的精灵下降到我想要的速度。 – user2029675