Unity 2D 碰撞 - 如何设置相互碰撞的对象

Unity 2D collisions - how to setup objects that collides among themselves

我刚开始使用 Unity 5,但在处理 2D 碰撞时遇到了一些问题。仔细看了一下,我发现可以定义三种类型的对象: - 静态:只是一个 2D 碰撞器(例如 2D 碰撞盒组件)。 - 动态:2D collider + 2D 刚体。 - 运动学:2D collider + 2D 刚体设置为运动学。

据我所知,它们是这样碰撞的: 静态:只与动态碰撞。 动态:仅与静力学和运动学发生碰撞。 运动学:仅与动力学发生碰撞。

我正在尝试制作一个简单的 Space Invaders,我正在努力定义不同元素(外星人、玩家、外星人子弹和玩家子弹)的碰撞类型。 我想我可以将对象设置为动态并禁用重力以匹配正确的碰撞类型。

但我的问题是,例如我想制作一个简单的游戏,其中包含一些相同类型的敌人(实例化预制件),并且我希望这些敌人能够检测到彼此之间的碰撞。我应该如何设置敌人的碰撞属性来实现?

非常感谢!

我个人会将敌人设置在同一层,并确保它们相互碰撞。您可以在检查器中设置预制件的图层,它位于名称下方,如下所示:

单击图层后,在完整的底部还有一个添加新图层的选项。

然后我会通过菜单设置Layer Collision Matrix Edit - Project Settings - Physics 2D来匹配需要或不需要相互碰撞的图层,比如所以:

在此示例中,Enemy 图层不会与自身以外的任何其他图层发生碰撞。