LibGDX Box2d 碰撞错误

LibGDX Box2d Collision Error

我知道这会有些含糊。我正在编写一款动作冒险风格的游戏,但我遇到了一个随机(看似自发的)问题,我正在为角色使用的 body 没有任何问题。我实际上并没有处理碰撞,我只是在使用内置的 body touches body causes collision 功能。调试渲染器指示发生了碰撞,但我不明白为什么会发生碰撞。我想我需要的是比我更熟悉 LibGDX 的人来推测为什么会发生这种情况。

我想@CoderMusgrove 是对的。
如果你有一个平坦的地板,由许多盒子组成,你可能会卡在它们的边缘。
那是因为在物理模拟中,body会被重力向下推。这会导致碰撞,通常会将 body 向上推。
但是,如果您在两个盒子之间被推下,碰撞解决器有时会决定将您推回去,因为这是避免碰撞的较短方法。
您可以阅读更多相关信息 here
link 中也讨论了解决方案。有几种不同的方式:
- 切割边缘:如果您切割角色的边缘,碰撞解决器将更有可能决定将您的角色向上推。我尝试了这个解决方案,但在我的例子中,它稍微减慢了角色的速度。此外,当我将边缘切得太多时,角色每次移动到另一个盒子时都会开始跳跃。
- 使用 edge-shapes:您可以不使用框,而只使用边。看来你不会经常卡在边缘,所以这可能已经解决了你的问题。
- 使用 gost 顶点:使用 Ghost 顶点,您可以向解析器提供有关如何解决冲突的提示。这些幻影顶点仅用于碰撞响应,因此它们不会影响模拟的其余部分。
- 合并盒子:如果可能的话,最好的解决方案是从所有相邻的盒子中创建一个大盒子。这将解决问题,因为不再有 body 可能卡住的边缘。