Physics2D.IgnoreLayerCollision,对象仍然会碰撞

本文关键字:碰撞 对象 IgnoreLayerCollision Physics2D | 更新日期: 2023-09-27 17:51:16

我对下面的代码有问题,尽管图层碰撞矩阵说图层不应该碰撞(即使手动设置),标记为第8层的对象仍然与第11层的对象碰撞。

是否有一个修复/替代方案使不同层的对象不碰撞

if (Drop)
{
    Physics2D.IgnoreLayerCollision(11, 8);
}
else
{
     Physics2D.IgnoreLayerCollision(11, 8, false);
}

Physics2D.IgnoreLayerCollision,对象仍然会碰撞

找到解决办法了

在my Prefab中禁用Platform Effector 2D上的Use Collider Mask

并将代码改为:

      if (Drop)
        {
            Physics2D.IgnoreLayerCollision(8, 11);
            myGameObject.GetComponent<EdgeCollider2D>().enabled = false;
            myGameObject.GetComponent<EdgeCollider2D>().enabled = true;
        }
        else
        {
            Physics2D.IgnoreLayerCollision(8, 11, false);
        }