有没有办法在运行时重新计算多边形对撞机?并且可能具有更高的准确性?

Is there a way to recalculate the polygon collider at runtime? and possibly with better accuracy?

所以我有这个游戏,其中有可破坏的地形。我的设置是,当地形被破坏时,地形纹理的一部分会变得透明,以充当火山口。发生任何一种变化后,我删除了地形纹理上的多边形碰撞器并创建一个新的碰撞器以重新计算地形,但显然这对处理能力非常不利。有没有办法在不这样做的情况下重置多边形碰撞器?

此外,多边形碰撞器不是很准确,有人告诉我像素完美碰撞在 unity 中是不可能的,但我还是抱有希望。有没有办法至少提高准确性?

这是我的问题的一个例子:

Collider 重新计算很昂贵,在 Unity 中没有办法解决它,你甚至不能异步进行。

这取决于你的具体情况,但对于动态地形破坏的蠕虫类游戏,我根本不会使用多边形 colliders/Unity 物理引擎。 我会创建自己的像素级完美碰撞系统,它只依赖于底层地形纹理。 您已经有了地形数据,可以使用 Bresenham 算法检查碰撞。

这里有教程:http://gamedevelopment.tutsplus.com/tutorials/coding-destructible-pixel-terrain-how-to-make-everything-explode--gamedev-45

在这种情况下,我建议设置基于集群的碰撞器。你如何计算变得透明的纹理区域?如果它有一个固定的大小,你可以创建一个大的碰撞器,它由许多较小的(六边形?)大小的碰撞器组成,它们的大小等于纹理的透明区域。

使纹理透明后,只需销毁簇即可。虽然你必须为每张地图制作六角形(如果你选择这种形状)网格。

这在程序生成的地图中更难实现,但仍然有可能,因为目前没有动态碰撞器。