0
0
Unityframework~10 mins

Trigger vs collision detection in Unity - Visual Side-by-Side Comparison

Choose your learning style9 modes available
Concept Flow - Trigger vs collision detection
Object A moves
Check Collider Overlap?
NoNo Interaction
Yes
Is Trigger?
YesTrigger Event Fired
Is Trigger?
NoCollision Event Fired
When two objects move, Unity checks if their colliders overlap. If yes, it checks if either collider is a trigger. If trigger, trigger events fire; otherwise, collision events fire.
Execution Sample
Unity
void OnTriggerEnter(Collider other) {
    Debug.Log("Trigger detected with " + other.name);
}

void OnCollisionEnter(Collision collision) {
    Debug.Log("Collision detected with " + collision.gameObject.name);
}
This code logs messages when an object enters a trigger or collides physically with another object.
Execution Table
StepObject A PositionObject B PositionCollider Overlap?Is Trigger?Event FiredOutput
1(0,0,0)(5,0,0)No-NoneNo event
2(4,0,0)(5,0,0)YesYesTrigger EventTrigger detected with ObjectB
3(4,0,0)(5,0,0)YesNoCollision EventCollision detected with ObjectB
4(6,0,0)(5,0,0)No-NoneNo event
💡 When objects no longer overlap, no events fire.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4
Object A Position(0,0,0)(0,0,0)(4,0,0)(4,0,0)(6,0,0)
Object B Position(5,0,0)(5,0,0)(5,0,0)(5,0,0)(5,0,0)
Collider OverlapFalseFalseTrueTrueFalse
Is TriggerN/AN/AYes/NoYes/NoN/A
Event FiredNoneNoneTrigger or CollisionTrigger or CollisionNone
Key Moments - 3 Insights
Why does OnTriggerEnter fire but OnCollisionEnter does not when the collider is a trigger?
Because when a collider is marked as a trigger, Unity does not treat it as a physical collision but as an overlap event, so only trigger events fire (see execution_table step 2).
Can both OnTriggerEnter and OnCollisionEnter fire at the same time for the same objects?
No, only one event type fires depending on whether the collider is a trigger or not (see execution_table steps 2 and 3).
What happens if objects stop overlapping after a collision or trigger event?
No events fire when objects are apart, as shown in execution_table step 4 where overlap is false and no event occurs.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step does the trigger event fire?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Check the 'Event Fired' column for 'Trigger Event' in the execution_table.
According to variable_tracker, what is Object A's position after step 3?
A(4,0,0)
B(0,0,0)
C(6,0,0)
D(5,0,0)
💡 Hint
Look at the 'Object A Position' row under 'After Step 3' in variable_tracker.
If Object B's collider was not a trigger, which event would fire when overlapping occurs?
ATrigger Event
BNo Event
CCollision Event
DBoth Trigger and Collision Events
💡 Hint
Refer to execution_table step 3 where 'Is Trigger?' is No and 'Collision Event' fires.
Concept Snapshot
Trigger vs Collision Detection in Unity:
- Trigger colliders detect overlaps without physical response.
- Collision colliders detect physical impacts.
- OnTriggerEnter fires when a trigger collider overlaps.
- OnCollisionEnter fires when colliders physically collide.
- Only one event type fires per overlap based on collider settings.
Full Transcript
In Unity, when two objects move, the engine checks if their colliders overlap. If they do, it then checks if either collider is set as a trigger. If yes, Unity fires trigger events like OnTriggerEnter, which detect overlaps without physical collision. If not, Unity fires collision events like OnCollisionEnter, which detect physical impacts. The execution table shows objects moving closer, overlapping, and which events fire depending on the collider settings. Variable tracking shows positions and overlap states changing step by step. Key moments clarify common confusions about why only one event fires and what happens when objects stop overlapping. The visual quiz tests understanding of event firing steps and variable states. This helps beginners see clearly how Unity distinguishes triggers from collisions during gameplay.