忽略默认对撞机但不是触发器对撞机

时间:2015-09-14 19:07:50

标签: c# unity3d

我的Awake方法有以下内容:

void Awake() {
    Physics2D.IgnoreLayerCollision(LayerMask.NameToLayer("Player"), LayerMask.NameToLayer("Weapon"));
}

在物体上我有两个碰撞器,其中一个是触发器,另一个是默认碰撞器。我想做的是让我的玩家层忽略我的武器default collider,但不要忽略武器trigger collider

这样做有好办法吗?因为我上面的代码使它忽略了两个碰撞器。

2 个答案:

答案 0 :(得分:0)

我认为您可以在OnCollisionEnter函数中手动忽略它,这是一种更简单的方法。

void OnCollisionEnter2D (Collider2D other)
{
    //ignore collider of Player
    if(!other.transform.name.Equals("Player")
    {
        //do something here
    }

}

void OnTriggerEnter2D (Collider2D other)
{
    // Don't ignore trigger of Player

    //do something here
}

答案 1 :(得分:0)

我认为如果您禁用这两个图层之间的冲突,则会禁用所有内容。我现在无法对此进行测试,但您是否尝试创建一个多维数据集,使其触发并命名该层" TriggerLayer",当然将多维数据集拖动到wepon以使其像其子一样运行。它们将在同一个父级,但具有不同的层。我不确定这是否有效,或者它是否是一个好的解决方案,但试一试。