我正在制作一个太空射击游戏,它发生在一个大地牢中,它由定义墙壁的大矩形组成。游戏中的一切都是使用 Farseer Physics 进行物理模拟的。但是有一个问题:我希望地牢看起来足够大,但这要求我的网格中至少有 80x80 个矩形,这意味着在最坏的情况下,我有 6400 个物理模拟的身体,这并不完全是性能友好,你可以猜到。
我的临时解决方案是将网格划分为垂直切片,以便对于每一列,使用布尔加法操作添加所有矩形,然后使用生成的凹多边形创建一个主体。它稍微提高了性能,但是多边形倾向于混乱,变得不存在,阻塞通常应该可以遍历的方式,甚至变得无效,并导致 Farseer 崩溃。
我一直在考虑制作某种算法,以某种方式找到墙壁的最大区域并将它们合并成一个大矩形,并继续对较小的矩形执行此操作,直到所有孔都被填满,但我不知道如何实现这个. 这似乎是一个完美的解决方案,因为它可以解决性能问题以及我现在遇到的凹多边形混乱。有没有人知道如何实现这样的事情?
完全停止使用物理引擎并不是一个解决方案,因为我的游戏中的很多东西都依赖它。
编辑:这里有一个小例子,说明身体现在的样子:(每个数字都是一个身体)
这就是我希望他们成为的样子: