Box2D - 贴在物体两侧的字符

时间:2014-04-13 22:29:50

标签: java libgdx box2d

我正在使用带有libgdx的Box2D。我遇到了默认碰撞操作的问题。当我跳跃或击中物体顶部时,一切正常。我的目标并不坚持。如果它击中顶部,它就站在上面。如果它击中底部,它会下降。但是如果它击中任何一侧,只要我向那个方向移动,我的物体就会粘住。换句话说,当重力与块/墙的侧面碰撞时,重力对它没有影响。我做了一些研究,但所有解决方案都说使用b2Settings,我不能用libgdx。有什么办法可以解决这个问题吗?我用来移动我的角色(向左移动)的代码如下:

level.character.body.setLinearVelocity(
                        -level.character.terminalVelocity.x,
                        level.character.body.getLinearVelocity().y);

这是一个例子。如你所见,它坚持砖而不是下降。 (我的角色目前是硬币:p)

Sticking to the wall

1 个答案:

答案 0 :(得分:1)

尝试使用ApplyForce或ApplyImpulse来移动东西,而不是使用SetLinearVelocity。问题是SetLinearVelocity允许你创造不切实际的情况,例如在这种情况下当球撞到墙壁时它应该停止并且水平速度确实应该为零,但是你压倒自然结果并说球没有停止一点都没有,它仍然在移动。

请注意,即使使用ApplyForce或ApplyImpulse,如果力足够强且夹具之间有足够的摩擦力,你仍然可能会遇到这个问题(就像现实世界一样,如果你把一些东西推到墙上足够坚硬,表面不太滑,你可以阻止它掉下来。)