2015-05-14 140 views
1

我从Unity 5开始,我正在用它的2D碰撞散开一点点。稍微查看一下,我发现有三种类型的对象可以定义: - 静态:只是一个2D对撞机(例如2D碰撞盒组件)。 - 动态:2D碰撞器+ 2D刚体。运动学:2D碰撞器+ 2D刚体设置为运动学。Unity 2D碰撞 - 如何设置彼此碰撞的对象

据我所知,他们以这种方式相撞: 静态:只与动态相冲突。 动态:只与静力学和运动学冲突。运动学:只与动力学碰撞。

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

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

非常感谢提前!

回答

0

就我个人而言,我会将敌人置于同一层,并确保它们相互碰撞。您可以设置预制层的检查,所在名称的下方,你可以在这里看到:

enter image description here

一旦你点击图层上,有添加新的选项层,以及完整的底部。

然后我将设置Layer Collision Matrix通过菜单Edit - Project Settings - Physics 2D到需要或不需要互相碰撞,像这样的层相匹配:

enter image description here

在这个例子中Enemy层不会与自身以外的任何其他层发生冲突。

+0

谢谢你的帮助约瑟夫。然而我想知道的是他们彼此碰撞的敌人属性应该是什么(碰撞矩阵的一部分)。我的意思是......应该都是静态的,动态的还是运动型的?因为据我所知,相同类型的物体被物理库忽略,所以它们不会相互碰撞。只是想知道是否有什么我可以做,迫使图书馆,使他们相互碰撞。 – Cris

+0

对不起,我误解了你。我不认为你可以绕过它。但是如果你开始有创意,你可能想尝试创建儿童游戏对象并设置不同的碰撞体。虽然它会很快变得混乱,但它是值得的尝试。 –

+0

我明白了...我担心这是正确的答案T_T非常感谢您的意见:) – Cris