Saltar al contenido

🎮 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.

Etiquetas:

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.

¿Atascado con tu proyecto? Presupuesto GRATIS

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