Unity physics systems: Rigidbody, collisions, triggers, layers, and physics queries (Raycast, OverlapSphere).
Unity physics systems covering Rigidbody dynamics, collision detection, triggers, layer matrices, and physics queries.
| Query | Use Case |
|---|---|
Physics.Raycast | Line of sight, hitscan weapons |
Physics.SphereCast | Projectile with radius |
Physics.OverlapSphere | AOE detection |
Physics.BoxCast | Melee swing detection |
Physics.CapsuleCast |
| Character movement checks |
┌─────────────────────────────────────────────────────────────┐
│ COLLISION │
│ OnCollisionEnter/Stay/Exit │
│ • Both have Colliders │
│ • At least one has Rigidbody │
│ • Neither is Trigger │
│ • Physical response (push, bounce) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ TRIGGER │
│ OnTriggerEnter/Stay/Exit │
│ • One has "Is Trigger" enabled │
│ • At least one has Rigidbody │
│ • No physical response │
│ • Used for detection zones │
└─────────────────────────────────────────────────────────────┘
User: "Shoot raycast and deal damage."
Agent:
LayerMask enemyLayer = LayerMask.GetMask("Enemy");
if (Physics.Raycast(origin, direction, out RaycastHit hit, 100f, enemyLayer))
{
if (hit.collider.TryGetComponent<IDamageable>(out var target))
target.TakeDamage(new DamageInfo(25f));
}
User: "Find all enemies in 5m radius."
Agent:
Collider[] hits = Physics.OverlapSphere(center, 5f, enemyLayer);
foreach (var hit in hits)
{
// Process each enemy
}
User: "Check if character is grounded."
Agent:
bool isGrounded = Physics.SphereCast(
transform.position + Vector3.up,
0.3f,
Vector3.down,
out _,
1.1f,
groundLayer
);
@damage-health-framework - Damage on collision@advanced-character-controller - Character physics@navmesh-pathfinding - AI movementAvailable in templates/ folder.