LibGDX Box2d碰撞错误

时间:2015-07-14 01:39:46

标签: java libgdx box2d jbox2d

我知道这有点模糊。我正在写一个动作冒险风格的游戏,我有一个随机(如看似自发的)问题,我正在使用的角色身体被抓住了什么。我实际上并没有处理碰撞,我只是使用内置的身体触摸身体导致碰撞功能。调试渲染器指示存在冲突时应该没有冲突,我无法辨别它为什么会发生。我想我需要的是更熟悉LibGDX的人,而不是我猜测为什么会发生这种情况。 Player is stuck on the left

1 个答案:

答案 0 :(得分:1)

我猜@CoderMusgrove是对的。
如果你有一个平坦的地板,由许多盒子创建,你可能会卡在它们的边缘 那是因为在物理模拟中,身体会被重力推倒。这会导致碰撞,通常会将身体向后推 但如果你被推到两个箱子之间,碰撞解决器有时会决定推回你,因为这是冲突的较短路径。
您可以阅读有关此here的更多信息 此外,还在链接中讨论了解决方案。有几种不同的方式:
- 切割边缘:如果切割角色的边缘,碰撞解析器将更有可能决定推动你的角色。我尝试了这个解决方案,但在我的情况下,它减慢了角色的速度。此外,当我切割边缘时,角色每次移动到另一个盒子时都会跳起来 - 使用边缘形状:您可以只使用边缘而不是使用盒子。看起来你不会经常陷入困境,所以这可能已经解决了你的问题 - 使用gost顶点:使用Ghost Vertices,您可以为解析器提供有关如何解决colission的提示。那些鬼顶点仅用于碰撞响应,因此它们不会影响其余的模拟 - 组合盒子:最好的解决方案是在可能的情况下从所有相邻盒子中创建一个大盒子。这样可以解决问题,因为没有更多的边缘会导致身体卡住。