【问题标题】:Unity 2D collisions - how to setup objects that collides among themselvesUnity 2D 碰撞 - 如何设置相互碰撞的对象
【发布时间】:2015-07-26 04:18:38
【问题描述】:

我从 Unity 5 开始,我对它的 2D 碰撞有点不知所措。稍微研究了一下,我发现可以定义三种类型的对象: - 静态:只是一个 2D 碰撞器(例如 2D 碰撞盒组件)。 - 动态:2D 对撞机 + 2D 刚体。 - 运动学:2D 对撞机 + 2D 刚体设置为运动学。

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

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

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

非常感谢!

【问题讨论】:

    标签: unity3d 2d collision


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的帮助约瑟夫。但是我想知道的是,它们相互碰撞的敌人属性应该是什么(碰撞矩阵的一部分)。我的意思是……都应该是静态的、动态的还是运动的?因为据我所知,物理库会忽略相同类型的对象,因此它们不会发生碰撞。只是想知道是否有什么办法可以强制图书馆让它们相互碰撞。
    • 对不起,我误解了你。我不认为你可以绕过它。但是,如果您开始有创意,您可能想尝试创建子游戏对象并在其上设置不同的碰撞器。虽然它很快就会变得一团糟,但值得一试。
    • 我明白了...我担心这是正确的答案 T_T 非常感谢您的 cmets :)
    • 对不起!只要有创意,你就会克服这个限制。
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多