Physics2D.IgnoreLayerCollision 不起作用

问题描述 投票:0回答:0

Physics2D.IgnoreLayerCollision 不起作用,尽管检查 (Physics2D.GetIgnoreLayerCollision) 表示层相互忽略。

代码相当简单,问题可能不相关,因为 Physics2D.GetIgnoreLayerCollision(7, 8) 显示层相互忽略,就像编码一样。 但是在 Physics2D.IgnoreLayerCollisions(7, 8, true) 被触发后,我的玩家(位于第 7 层)仍然与敌人(位于第 8 层)发生碰撞。仅供参考:脚本附在敌人身上。

我对编码很陌生,所以我不知道这里要考虑的所有事情。我的猜测是,这可能是由引擎 (Unity) 中的设置而不是代码本身引起的问题,但我还没有找到任何可能导致此问题的原因。我看到一些类似的问题是由平台效应器上的碰撞遮罩引起的,但由于我不使用没有帮助的效应器。

有什么想法可以导致碰撞器不忽略彼此,尽管这些层可能会忽略对方?

 void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.name.Equals("Player"))
        {
            StartCoroutine("BecomeInvincible");
        }
    }

    IEnumerator BecomeInvincible()
    {
        Physics2D.IgnoreLayerCollision(7, 8, true);
        yield return new WaitForSeconds(2f);
        Physics2D.IgnoreLayerCollision(7, 8, false);   
    }

unity3d c#-4.0 2d
© www.soinside.com 2019 - 2024. All rights reserved.