Saltar al contenido

🎮 Cómo Hacer que un Enemigo Persiga al Jugador en Unity con NavMesh

En este tutorial, aprenderás a hacer que un enemigo en Unity persiga al jugador utilizando NavMesh (Navegación AI).

Movimiento suave y eficiente.
Detección del jugador en tiempo real.
Evita obstáculos automáticamente.


🔹 1. Configurar el Terreno y el NavMesh

📌 Paso 1: Crear el Terreno de Navegación

  1. Crea un Plane o un Terrain como suelo (GameObject > 3D Object > Plane).
  2. Agrega obstáculos (GameObject > 3D Object > Cube) para probar la navegación del enemigo.

📌 Paso 2: Hacer que el Terreno sea Navegable

  1. Selecciona el Plane o Terrain en la Jerarquía (Hierarchy).
  2. Ve al menú Window > AI > Navigation.
  3. En la pestaña «Bake», marca «Navigation Static».
  4. Presiona el botón «Bake» para generar el NavMesh.

💡 Nota: Si no ves la opción Navigation, habilita el paquete AI Navigation en Package Manager.


🔹 2. Configurar el Enemigo con NavMeshAgent

📌 Paso 3: Crear el Enemigo

  1. Crea un GameObject 3D (GameObject > 3D Object > Capsule) y renómbralo Enemigo.
  2. Añade un NavMeshAgent (Add Component > NavMeshAgent).
  3. Ajusta los valores del NavMeshAgent en el Inspector:
    • Speed: 3.5 (velocidad de movimiento).
    • Acceleration: 8 (aceleración).
    • Angular Speed: 120 (velocidad de giro).
    • Stopping Distance: 1.0 (distancia a la que deja de moverse cerca del jugador).

🔹 3. Crear el Script de Persecución

📌 Paso 4: Crear el Script EnemigoPersecucion.cs

  1. En la carpeta Scripts (Assets/Scripts), crea un nuevo script (Right Click > Create > C# Script).
  2. Nómbralo EnemigoPersecucion y ábrelo.
  3. Pega este código:
using UnityEngine;
using UnityEngine.AI; // Necesario para NavMesh

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

    void Start()
    {
        // Obtener el NavMeshAgent del enemigo
        agente = GetComponent<NavMeshAgent>();

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

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

🔹 4. Asignar el Jugador al Enemigo

📌 Paso 5: Configurar el Jugador

  1. Asegúrate de que el jugador tenga el Tag "Player":
    • Selecciona el jugador en la Jerarquía.
    • En el Inspector, cambia su Tag a "Player".
    • Si "Player" no existe, agrégalo en Add Tag > + Player.

📌 Paso 6: Asignar el Objetivo en el Inspector

  1. Selecciona el Enemigo en la Jerarquía.
  2. En el Inspector, busca el campo Objetivo dentro del script EnemigoPersecucion.
  3. Arrastra el Jugador desde la Jerarquía al campo Objetivo.

🎯 Resultado Final

El enemigo perseguirá al jugador en tiempo real.
Si el jugador se mueve, el enemigo ajustará su ruta automáticamente.
El NavMeshAgent evitará obstáculos y tomará la mejor ruta.

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