unity-game-enginecollision-detection

Unity: collision matrix is setup but collider still triggers


I wanted to setup the layers that my Player interacts to, but it still triggers with unwanted layers. I have disabled whole collision matrix in project settings:

enter image description here

Here's my Player settings:

enter image description here

And ProjectileCleaner settings:

enter image description here

I have next script attached to 'Player' gameObject, but my Player still triggers with 'ProjectileCleaner' layer. Why?

public class PlayerCollisionController : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("trigger: " + other.name);
    }
}

Solution

  • Because the layer collision matrix only affects (physical) collision detection, and trigger related callbacks will always be called, if you don't care about them, just ignore them.

    void OnTriggerEnter2D(Collider2D other)
    {
        if(other.gameObject.CompareTag("ProjectileCleaner"))
            return;
    }