在Unity中,我怎样才能得到一个二维多边形对撞机,它是一个大对撞机的面积减去大对撞机内部的一些较小的对撞机?

In Unity, how can I get a 2d Polygon collider that is the area of a big collider subtract some smaller collider inside the big one?

像附图一样,我想得到一个多边形对撞机,最大对撞机的面积减去大对撞机内部这两个较小对撞机的面积?

我只想有一个只覆盖下图中灰色区域的对撞机。

请在运行时获取复合/多边形或其他类型的碰撞器。

非常感谢。

我不确定,但您可以使用单独的盒子碰撞器来获得相同的效果。只需要脚本中的多个引用。

最快的方法确实是拥有 3 个独立的碰撞器,当与大碰撞器发生碰撞时,您还要检查两个较小的碰撞器是否发生碰撞。

检查 Clipper library for polygon operations (also worth checking the eppz! Geometry 库,它本身使用 Clipper。

然后您可以使用生成的多边形“路径”(在 Clipper 库中这样称呼)来创建多个 EdgeCollider2Ds(您可以 [设置它的点][4] 来创建每个的形状多边形。

但是这种方法有一个问题,那就是最终你不会有一个内部和外部的“实体”对撞机,而你只会有线碰撞。希望在大多数情况下这不会成为问题。