统一 - 两个具有刚体的物体如何相互穿过?

时间:2018-01-26 12:20:47

标签: unity3d unity5 unityscript

(我看到像我一样的问题,但我的情况有所不同)

我解释说:

我有一个2D游戏(侧视图),玩家四处走动,用剑或锤子等武器互相击打。我在一个名为“Ground”的碰撞层和玩家在“玩家”层中设置了地面。并检查“Ground”和“Player”层的碰撞。地面没有僵硬的身体,但球员有(由于使用重力等)。我希望玩家不要相互碰撞以获得更平滑的机制,但我想在他们通过对方时检测和接收消息,对于我需要的一些porpuses。 现在,如果我取消选中“播放器”冲突层(在Collision2D设置中),它们可以通过,但由于非活动冲突,我无法接收任何消息。如果我将玩家的对手设置为触发器,他们会穿过地面并摔倒。 (如果我错了,请纠正我)

所以我该怎么办?

3 个答案:

答案 0 :(得分:2)

让你的玩家游戏对象有两个子对象(一个你可以调用GroundCollider,你可以调用PlayerCollider)

在第一个上,添加一个未选中onTrigger的对撞机。在第二个上,添加一个带有onTrigger的对撞机

答案 1 :(得分:1)

如果两个对象都需要是实体( 触发卷),那么您需要编辑物理层。

  1. 在检查器面板下拉列表中将两个对象更改为单独的图层(默认情况下,有32个图层,只有前五个对象具有名称)。
  2. Layers setting

    这恰好来自我正在处理的项目,顶部的图层旁边有红色标记是默认图层。在底部是“编辑图层”,您可以在其中命名和定义新图层(总共最多32个)。

    1. 转到修改 - >项目设置 - >物理并更改物理碰撞蒙版,以便为两个对象分配的两个图层设置为不相互作用:
    2. Collision matrix

      取消选中任何不应发生碰撞的对(默认情况下,所有图层都会与所有图层碰撞)。

答案 2 :(得分:0)

所以在玩了Toaster说的话之后,我找到了解决方案。

地面对撞机必须在“地面”层中,在“玩家”图层中检查带有触发器的碰撞器的玩家,我们还需要第三层称为“GroundCollider”,并为玩家提供一个子对象没有检查触发器的碰撞器。

确定。然后在物理2D设置“播放器”层必须检查碰撞JUST自身。并且“Ground”图层和“GroundCollider”应该相互检查碰撞,而不是自身或任何其他图层。

通过这些设置,玩家可以与地面发生碰撞,两名玩家可以互相检查碰撞,也可以互相通过。