These functions help your game know when two objects touch or overlap. This lets you make things happen, like scoring points or playing sounds.
OnCollisionEnter2D and OnTriggerEnter2D in Unity
using UnityEngine; public class CollisionExample : MonoBehaviour { // Called when this object collides with another with a Rigidbody2D and Collider2D private void OnCollisionEnter2D(Collision2D collision) { // Your code here } // Called when this object's trigger collider overlaps another collider private void OnTriggerEnter2D(Collider2D other) { // Your code here } }
OnCollisionEnter2D is called when two solid objects with Rigidbody2D and Collider2D touch and collide.
OnTriggerEnter2D is called when an object with a Collider2D set as a trigger overlaps another collider.
private void OnCollisionEnter2D(Collision2D collision)
{
Debug.Log("Collided with " + collision.gameObject.name);
}private void OnTriggerEnter2D(Collider2D other)
{
Debug.Log("Entered trigger of " + other.gameObject.name);
}// Edge case: What if the object has no Rigidbody2D? // Neither method will be called because physics needs Rigidbody2D to detect collisions or triggers.
// Edge case: What if the collider is not set as trigger? // OnTriggerEnter2D won't run; instead OnCollisionEnter2D will run if colliders are solid.
This script prints messages when the object collides with another solid object or enters a trigger zone. Attach it to a GameObject with Rigidbody2D and Collider2D components. Make sure some colliders are triggers and some are not to see both messages.
using UnityEngine; public class CollisionTriggerDemo : MonoBehaviour { private void OnCollisionEnter2D(Collision2D collision) { Debug.Log($"Collision detected with {collision.gameObject.name}"); } private void OnTriggerEnter2D(Collider2D other) { Debug.Log($"Trigger entered by {other.gameObject.name}"); } }
Time complexity: These methods run only when collisions or triggers happen, so they do not slow down your game continuously.
Space complexity: Minimal, only storing collision info temporarily.
Common mistake: Forgetting to add Rigidbody2D to objects, so these methods never get called.
Use OnCollisionEnter2D for solid object hits and OnTriggerEnter2D for zones or pickups that don't block movement.
OnCollisionEnter2D detects solid collisions between objects with Rigidbody2D and Collider2D.
OnTriggerEnter2D detects when an object enters a trigger collider (a collider set as a trigger).
Both let you run code when objects touch or overlap, helping your game respond to player actions and events.