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
图层不会与自身以外的任何其他图层发生碰撞。
我刚开始使用 Unity 5,但在处理 2D 碰撞时遇到了一些问题。仔细看了一下,我发现可以定义三种类型的对象: - 静态:只是一个 2D 碰撞器(例如 2D 碰撞盒组件)。 - 动态:2D collider + 2D 刚体。 - 运动学:2D collider + 2D 刚体设置为运动学。
据我所知,它们是这样碰撞的: 静态:只与动态碰撞。 动态:仅与静力学和运动学发生碰撞。 运动学:仅与动力学发生碰撞。
我正在尝试制作一个简单的 Space Invaders,我正在努力定义不同元素(外星人、玩家、外星人子弹和玩家子弹)的碰撞类型。 我想我可以将对象设置为动态并禁用重力以匹配正确的碰撞类型。
但我的问题是,例如我想制作一个简单的游戏,其中包含一些相同类型的敌人(实例化预制件),并且我希望这些敌人能够检测到彼此之间的碰撞。我应该如何设置敌人的碰撞属性来实现?
非常感谢!
我个人会将敌人设置在同一层,并确保它们相互碰撞。您可以在检查器中设置预制件的图层,它位于名称下方,如下所示:
单击图层后,在完整的底部还有一个添加新图层的选项。
然后我会通过菜单设置Layer Collision Matrix
Edit
- Project Settings
- Physics 2D
来匹配需要或不需要相互碰撞的图层,比如所以:
在此示例中,Enemy
图层不会与自身以外的任何其他图层发生碰撞。