【发布时间】:2021-06-29 21:15:24
【问题描述】:
我有一个带有程序生成地形的横向滚动平台类型游戏,见下文。粉红色的圆圈是玩家的动态身体,绿色区域是单个静态身体,每个瓷砖都是一个固定装置。
玩家可以通过线性脉冲左右移动和跳跃。现在,大多数情况下这都可以正常工作,但每隔一段时间,当我在玩家周围跳跃时,玩家的身体会突然部分穿过地面并卡住:
我看不出这有什么规律,它似乎只是随机发生的。玩家跌倒的程度也有很大差异,有时您只是在地形中稍微夹入一点,而其他时候您会跌倒 15 或 20 个瓷砖。
我在这里发现了类似忽略碰撞的物体问题的线程,一个建议是增加 World.step() 方法的 velocityIterations 和 positionIterations 参数。我一直在尝试,这似乎并不重要。另一个建议是将玩家身体设置为子弹。再次,尝试了它,它没有做任何事情。那么,还有其他想法吗?
【问题讨论】:
-
我也遇到过类似的问题。你的绿色静态身体看起来像一个凹多边形。显然,Box2D 存在凹多边形碰撞问题或顶点按顺时针顺序排列的问题。这有帮助吗? stackoverflow.com/a/16733052/11278807
-
我明白了,我想我得尝试实现链形
-
如果您遇到重影碰撞,链条形状应该会有所帮助。但是,您还没有描述拥有这些。链形将替代在链形可以绑定的区域内拥有许多矩形。它可能有助于避免跌倒,并且可能是值得尝试的事情。粉色圆圈的
m_radius是什么?如果它小于 Box2D 的优化对象,我发现您更有可能看到这些事件发生。如果它比0.1f小,请尝试将其设置为至少0.25f。我建议先检查尺寸。