Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LibGDX-Box2d冲突错误_Java_Libgdx_Box2d_Jbox2d - Fatal编程技术网

Java LibGDX-Box2d冲突错误

Java LibGDX-Box2d冲突错误,java,libgdx,box2d,jbox2d,Java,Libgdx,Box2d,Jbox2d,我知道这会有点模糊。我正在写一个动作冒险风格的游戏,我有一个随机的问题(就像在看似自发的问题中一样),我为角色使用的身体什么都没有被抓住。我不是在处理碰撞,我只是在使用内置的body Touchs body causes碰撞功能。调试渲染器指示在不应该存在冲突的情况下存在冲突,并且我无法辨别为什么会发生冲突。我想我需要的是一个比我更熟悉LibGDX的人来推测为什么会发生这种情况 我想@CoderMusgrove是对的。 如果你有一个由许多盒子组成的平地板,你可能会被它们的边缘卡住。 这是因为在物

我知道这会有点模糊。我正在写一个动作冒险风格的游戏,我有一个随机的问题(就像在看似自发的问题中一样),我为角色使用的身体什么都没有被抓住。我不是在处理碰撞,我只是在使用内置的body Touchs body causes碰撞功能。调试渲染器指示在不应该存在冲突的情况下存在冲突,并且我无法辨别为什么会发生冲突。我想我需要的是一个比我更熟悉LibGDX的人来推测为什么会发生这种情况

我想@CoderMusgrove是对的。
如果你有一个由许多盒子组成的平地板,你可能会被它们的边缘卡住。
这是因为在物理模拟中,物体会被重力推倒。这会导致碰撞,通常会将车身向后推。
但是,如果您被推到两个框之间,冲突解决程序有时会决定将您推回,因为这是走出冲突的较短方式。
您可以阅读更多关于此的信息。
链接中还讨论了解决方案。有几种不同的方法:
-切割边缘:如果切割角色的边缘,碰撞解析程序将更有可能决定向上推角色。我尝试了这个解决方案,但在我的例子中,它稍微减慢了角色的速度。此外,当我将边缘切割到一定程度时,角色每次移动到另一个盒子上时都会开始跳跃。
-使用边形状:不使用长方体,您可以只使用边。看起来你不会经常陷入困境,所以这可能会解决你的问题。
-使用gost顶点:使用重影顶点,可以向解析器提示如何解析共线。这些重影顶点仅用于碰撞响应,因此它们不会影响模拟的其余部分。

-组合框:最好的解决方案是在所有相邻框中创建一个大框,如果可能的话。这将解决问题,因为车身没有更多可能卡住的边缘。

我已经阅读了box2d碰撞及其一些问题,其中包括边缘碰撞不是很好。这么说,使用瓷砖会有问题,因为你会经常碰到边缘。有时你会陷入困境,有时你不会。我读过的教程说基本上可以平滑边缘(你必须通过使用
Shape.set(…)
来正确地获取它,或者你可以使用
圆形
和你的
多边形
。谢谢你提供的信息。我做了一些挖掘,但找不到这些信息。我将在身体上投射一个精灵,所以我将试着把墙围起来,看看效果如何。