🎮 Cómo Detectar Colisiones entre el Jugador y los Enemigos en Unity

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

  1. Selecciona el objeto Jugador en la JerarquĂ­a (Hierarchy).
  2. Añade un Rigidbody al Jugador (Add Component > Rigidbody).
  3. Configura el Rigidbody:
    • Activa Is Kinematic si el jugador no usa fĂ­sica.
    • Desactiva Use Gravity si el jugador no necesita caer.
  4. Asegura que tiene un Collider (BoxCollider, CapsuleCollider, etc.).
  5. Dale el Tag «Player» (Inspector > Tag > Player).

📌 Paso 2: Configurar el Enemigo

  1. Selecciona el Enemigo en la JerarquĂ­a.
  2. Asegura que tiene un Collider (BoxCollider, CapsuleCollider, etc.).
  3. Si usas OnTriggerEnter(), activa Is Trigger en el Collider.
  4. 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

  1. En la carpeta Scripts (Assets/Scripts), crea un nuevo script (Right Click > Create > C# Script).
  2. Nómbralo DetectarColision y ábrelo.
  3. 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

  1. Selecciona el Jugador en la JerarquĂ­a.
  2. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • LegitimaciĂłn:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • InformaciĂłn Adicional: Puede consultar la informaciĂłn detallada en la PolĂ­tica de Privacidad.

error: Content is protected !!
Este sitio web utiliza cookies, si necesitas más informaciĂłn puedes visitar nuestra polĂ­tica de privacidad    Ver
Privacidad