我遇到以下代码时出现问题,尽管图层碰撞矩阵表示图层不应该碰撞(即使手动设置),标记为图层8的对象仍然会与第11层中的对象发生碰撞。
是否存在修复/替代方法,使不同层的对象不会发生碰撞。
if (Drop)
{
Physics2D.IgnoreLayerCollision(11, 8);
}
else
{
Physics2D.IgnoreLayerCollision(11, 8, false);
}
答案 0 :(得分:1)
找到了解决方案。
我的Prefab中的Use Collider Mask
已停用Platform Effector 2D
并将代码更改为:
if (Drop)
{
Physics2D.IgnoreLayerCollision(8, 11);
myGameObject.GetComponent<EdgeCollider2D>().enabled = false;
myGameObject.GetComponent<EdgeCollider2D>().enabled = true;
}
else
{
Physics2D.IgnoreLayerCollision(8, 11, false);
}