Java Box2D-角色粘贴到对象的侧面

Java Box2D-角色粘贴到对象的侧面,java,libgdx,box2d,Java,Libgdx,Box2d,我正在将Box2D与libgdx一起使用。我对默认碰撞操作有问题。当我跳到或撞到物体的顶部时,一切正常。我的东西粘不住。如果它击中顶端,它就站在上面。如果它触底,它就会倒下。但如果它击中任何一边,只要我朝那个方向移动,我的物体就会粘住。换句话说,当重力与块/墙的侧面碰撞时,重力对其没有影响。我做了一些研究,但所有的解决方案都说使用了b2设置,而我不能使用libgdx。我有办法解决这个问题吗?我用来移动角色(向左移动)的代码如下: level.character.body.setLinearVel

我正在将Box2D与libgdx一起使用。我对默认碰撞操作有问题。当我跳到或撞到物体的顶部时,一切正常。我的东西粘不住。如果它击中顶端,它就站在上面。如果它触底,它就会倒下。但如果它击中任何一边,只要我朝那个方向移动,我的物体就会粘住。换句话说,当重力与块/墙的侧面碰撞时,重力对其没有影响。我做了一些研究,但所有的解决方案都说使用了b2设置,而我不能使用libgdx。我有办法解决这个问题吗?我用来移动角色(向左移动)的代码如下:

level.character.body.setLinearVelocity(
                        -level.character.terminalVelocity.x,
                        level.character.body.getLinearVelocity().y);
这是一个例子。如你所见,它粘在砖头上而不是掉下来。(我的角色目前是一枚硬币:p)


尝试使用ApplyForce或ApplyImpulse来移动对象,而不是使用SetLinearVelocity。问题是SetLinearVelocity允许您创建不现实的情况,例如,在这种情况下,当球撞到墙时,它应该停止,并且水平速度实际上应该为零,但您忽略了自然结果,并说球根本没有停止,并且仍在移动


请注意,即使使用ApplyForce或ApplyImpulse,如果力足够大且夹具之间有足够的摩擦力,您也可能会遇到此问题(就像在现实世界中,如果您将某物用力推到墙上,并且表面不太滑,您可以阻止它掉落)。

谢谢!有道理。我将重写运动输入,并让您知道它是如何工作的。:)