我正在使用平铺的tmx贴图,我创建了一个类,可以为某个图层中的每个贴片添加实体。到目前为止,这种情况一直很好,除非角色或敌人在屏幕上四处移动时,它的身体卡在两块瓷砖之间的边缘上。
这似乎“有时”发生在某些地方。跳跃让你失败,但它发生时很烦人,我试着增加位置迭代,但问题一直在重复发生。
看看我的游戏是什么样的:http://i.stack.imgur.com/f5Igm.png 我没有渲染瓷砖,因此更容易看到瓷砖的主体是什么样的
答案 0 :(得分:0)
上层动态的身体"皮肤&#34>会发生什么?可以嵌入到它下面的形状中。如果上身然后穿过较低的形状并遇到其中一个形状的角落,那么物理引擎就会产生与行进方向相反的冲动。
轰!上身卡住了。
这是一个放大的图像,显示了向右移动的上方矩形:
从它们延伸的蓝点和线是Box2D流形计算代码确定需要应用脉冲的位置。请注意红色/棕色矩形右侧的蓝点和线条。那些是反对冲动。
正如评论中提到的三十二上校一样,解决方案是使用" ghost-vertices"较低形状的边缘形状机制(或者只使用有效计算边缘的链形状)。
作为背景,我有自己的fork of Box2D,我一直在开发,我只是为这个问题推出了另一种解决方案,不要求较低的形状为边缘(或链)形状。我也完成了a write-up of this alternative。