En este tutorial, aprenderás a detectar colisiones entre el jugador y los enemigos en Unity usando OnTriggerEnter() o OnCollisionEnter().
✅ Funciona para detectar cuando el jugador toca un enemigo.
✅ Puede activar eventos como «Game Over», perder vida, o empujar al jugador.
✅ Compatible con Rigidbody
y Collider
.
🔹 1. Configurar el Jugador y el Enemigo Correctamente
Para que la detección de colisiones funcione, debes asegurarte de que uno de los dos objetos (jugador o enemigo) tenga un Rigidbody
y que ambos tengan Colliders.
📌 Paso 1: Configurar el Jugador
- Selecciona el objeto
Jugador
en la Jerarquía (Hierarchy
). - Añade un
Rigidbody
al Jugador (Add Component > Rigidbody
). - Configura el
Rigidbody
:- Activa
Is Kinematic
si el jugador no usa física. - Desactiva
Use Gravity
si el jugador no necesita caer.
- Activa
- Asegura que tiene un
Collider
(BoxCollider
,CapsuleCollider
, etc.). - Dale el
Tag
«Player» (Inspector > Tag > Player
).
📌 Paso 2: Configurar el Enemigo
- Selecciona el
Enemigo
en la Jerarquía. - Asegura que tiene un
Collider
(BoxCollider
,CapsuleCollider
, etc.). - Si usas
OnTriggerEnter()
, activaIs Trigger
en elCollider
. - Dale el
Tag
«Enemigo» (Inspector > Tag > Enemigo
).
🔹 2. Detectar Colisiones con OnTriggerEnter()
Si marcaste Is Trigger
en el Collider
del enemigo, usa este método.
📌 Paso 3: Crear el Script DetectarColision.cs
- En la carpeta
Scripts
(Assets/Scripts
), crea un nuevo script (Right Click > Create > C# Script
). - Nómbralo
DetectarColision
y ábrelo. - Pega este código en el
Jugador
:
using UnityEngine;
public class DetectarColision : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Enemigo")) // Verifica si el objeto tocado es un enemigo
{
Debug.Log("¡El jugador ha sido golpeado por un enemigo!");
// Aquí puedes llamar a un método de Game Over, restar vida, etc.
// Ejemplo: FindObjectOfType<GameOverManager>().ActivarGameOver();
}
}
}
🔹 3. Detectar Colisiones con OnCollisionEnter()
Si NO marcaste Is Trigger
en el Collider
del enemigo, usa este método.
📌 Código para Detección con OnCollisionEnter()
using UnityEngine;
public class DetectarColision : MonoBehaviour
{
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Enemigo")) // Verifica si el objeto tocado es un enemigo
{
Debug.Log("¡El jugador ha chocado contra un enemigo!");
// Aquí puedes activar Game Over, perder vida, etc.
}
}
}
🔹 4. Asignar el Script al Jugador
- Selecciona el
Jugador
en la Jerarquía. - Arrástrale el script
DetectarColision.cs
(Add Component > DetectarColision
).
🎯 Resultado Final
✅ Si el jugador toca un enemigo, se detectará la colisión.
✅ El evento se imprimirá en la Console
(Debug.Log
).
✅ Puedes añadir efectos como «Game Over» o restar vida.
