Saltar al contenido

🎮 Cómo Hacer que el Enemigo Deje de Moverse Tras Alcanzar al Jugador en Unity

En este tutorial, aprenderás a hacer que el enemigo se detenga completamente cuando alcanza al jugador, utilizando NavMeshAgent y detección de colisiones (OnTriggerEnter).

El enemigo dejará de moverse al colisionar con el jugador.
Puede activar una animación de ataque o un Game Over.
Fácil de integrar con NavMeshAgent.


🔹 1. Configurar el Enemigo y el Jugador

📌 Paso 1: Configurar el Jugador

  1. Selecciona el Jugador en la Jerarquía (Hierarchy).
  2. Añade un Rigidbody al Jugador (Add Component > Rigidbody).
    • Marca Is Kinematic ✅ (si el jugador no usa física).
    • Desactiva Use Gravity si el jugador no debe caer.
  3. Asegura que tiene un Collider (BoxCollider, CapsuleCollider, etc.).
  4. Dale el Tag "Player" (Inspector > Tag > Player).

📌 Paso 2: Configurar el Enemigo

  1. Selecciona el Enemigo en la Jerarquía.
  2. Añade un NavMeshAgent (Add Component > NavMeshAgent).
  3. Añade un Collider (BoxCollider, CapsuleCollider, etc.).
  4. Marca Is Trigger en el Collider ✅ (para usar OnTriggerEnter).
  5. Dale el Tag "Enemigo" (Inspector > Tag > Enemigo).

🔹 2. Modificar el Script del Enemigo para Detener el Movimiento

📌 Paso 3: Crear el Script EnemigoPersecucion.cs

Modifica el código del enemigo para detener su movimiento cuando alcance al jugador.

using UnityEngine;
using UnityEngine.AI;

public class EnemigoPersecucion : MonoBehaviour
{
    public Transform objetivo; // Referencia al jugador
    private NavMeshAgent agente;
    private Animator animator;

    void Start()
    {
        agente = GetComponent<NavMeshAgent>();
        animator = GetComponent<Animator>();

        if (objetivo == null)
        {
            Debug.LogError("⚠️ No se ha asignado el jugador como objetivo en el Inspector.");
        }
    }

    void Update()
    {
        if (objetivo != null && agente.enabled)
        {
            // Perseguir al jugador
            agente.SetDestination(objetivo.position);
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player")) // Verifica si tocó al jugador
        {
            Debug.Log("¡El enemigo atrapó al jugador! Deteniendo IA.");

            // Detener el movimiento del enemigo
            agente.isStopped = true; 
            agente.enabled = false; // Desactivar NavMeshAgent

            // Opcional: Activar animación de ataque
            if (animator != null)
            {
                animator.SetTrigger("Atacar");
            }

            // Opcional: Desactivar el control del jugador
            other.GetComponent<CharacterController>().enabled = false;

            // Opcional: Llamar a Game Over
            GameOverManager gameOver = FindObjectOfType<GameOverManager>();
            if (gameOver != null)
            {
                gameOver.ActivarGameOver();
            }
        }
    }
}

🔹 3. Asignar el Script al Enemigo

  1. Selecciona el Enemigo en la Jerarquía.
  2. Arrástrale el script EnemigoPersecucion.cs (Add Component > EnemigoPersecucion).
  3. Arrastra el Jugador al campo Objetivo en el Inspector.

🎯 Resultado Final

El enemigo se moverá persiguiendo al jugador.
Cuando alcance al jugador, se detendrá completamente.
Opcionalmente, puede activar una animación de ataque o Game Over.

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.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad