PHYSICS • COLLISION CALLBACKS

ONTRIGGERENTER NOT WORKING OR FIRING IN UNITY

Objects pass through trigger zones without firing OnTriggerEnter, OnTriggerStay, or OnTriggerExit events.

The 4-Point Trigger Checklist

In 95% of cases, OnTriggerEnter fails because one of these mandatory physics rules is violated:

1. At Least One Rigidbody Required
If two GameObjects have colliders but neither has a Rigidbody, PhysX treats both as static and no trigger callback will ever fire.
2. IsTrigger Must Be Checked
At least one of the two contacting colliders must have the Is Trigger checkbox enabled in its Inspector component.
3. Method Signature Spelling
Must be exactly void OnTriggerEnter(Collider other). (Not Collision other, and not Ontriggerenter lowercase).
4. Layer Matrix Enabled
Verify in Project Settings > Physics > Layer Collision Matrix that the two object layers are permitted to collide.

Working Trigger Code Example

using UnityEngine;

// Attach to your Collectible Coin (with BoxCollider.isTrigger = true AND Rigidbody.isKinematic = true)
public class CoinPickup : MonoBehaviour
{
    [SerializeField] private int coinValue = 10;

    // ✅ EXACT METHOD SIGNATURE (Notice: Collider, not Collision!)
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            Debug.Log($"Collected {coinValue} coins by {other.name}!");
            Destroy(gameObject);
        }
    }
}

Related Physics Guides & Errors

Frequently Asked Questions

If your player has multiple child colliders (e.g. body capsule and weapon hitbox), or if the trigger script is attached to a parent object while child objects also hold colliders, Unity receives trigger events for each child collider entering the zone. Check other.attachedRigidbody or use a boolean flag to prevent double processing.