如何将对撞机添加到复杂的迷宫中

时间:2019-05-24 17:46:54

标签: c# unity3d

我下载了一个用于过期目的的迷宫精灵,用于我的游戏,我正尝试在墙壁上添加对撞机。但是,由于迷宫很复杂,因此要在每面墙上添加Box collider 2D都是很多工作。

我尝试使用Polygon collider 2D,它是某种看起来不准确的网格碰撞器,是否有更好的方法将碰撞器添加到迷宫中,或者可以通过某种方式检测到迷宫的结构来以编程方式添加碰撞器?

这与我正在使用的迷宫类似:

添加评论

1 个答案:

答案 0 :(得分:1)

这个问题有一些答案,具体取决于您的方法。

1。基于Sprite的方法(您具有迷宫的图像)
确保精灵是透明的,并且仅在墙壁区域不透明(PNG图像可以具有透明性)。完成此操作后,您应该能够附加多边形对撞机以自动创建对撞机。如果图像像您说的那样太大/太复杂,则可能需要将其拆分为几个不同的图像(例如4个象限),然后对其进行排列并将多边形碰撞器附加到每个对象。一般来说,对撞机越简单,对撞机就越准确和有效。

上述方法的缺点是您必须做很多手工工作。如果您知道有很多手绘迷宫需要像这样构建对撞机,那么使用脚本自动执行上述过程可能是值得的,但是除非您知道自己要做什么,否则可能会很快变得复杂。在做。本质上,自动化脚本可以将子画面递归地划分为多个象限,创建相应的GameObjects,然后将PolygonColliders添加到每个象限中。

对您而言,在照片编辑程序中手动分割图像或制定算法来生成迷宫和对撞机可能比自动化要快,具体取决于您想进入代码的数量。

2。基于算法的方法
幸运的是,在线上有很多迷宫编程教程。多数用于3D迷宫,但制作2D迷宫的逻辑相同。如果您对此选项感兴趣,那么我会找到有关主题herehere的教程。为了在这些教程中的每一个迷宫生成后添加碰撞,您可以在每个具有墙的单元的每一侧添加BoxCollider2D(或者,如果使用预制,请在模板中添加BoxCollider2D预制)。