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
- Crea un
Plane
o unTerrain
como suelo (GameObject > 3D Object > Plane
). - Agrega obstáculos (
GameObject > 3D Object > Cube
) para probar la navegación del enemigo.
📌 Paso 2: Hacer que el Terreno sea Navegable
- Selecciona el
Plane
oTerrain
en la Jerarquía (Hierarchy
). - Ve al menú
Window > AI > Navigation
. - En la pestaña «Bake», marca «Navigation Static».
- 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
- Crea un
GameObject
3D (GameObject > 3D Object > Capsule
) y renómbraloEnemigo
. - Añade un
NavMeshAgent
(Add Component > NavMeshAgent
). - Ajusta los valores del
NavMeshAgent
en elInspector
:- 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).
- Speed:
🔹 3. Crear el Script de Persecución
📌 Paso 4: Crear el Script EnemigoPersecucion.cs
- En la carpeta
Scripts
(Assets/Scripts
), crea un nuevo script (Right Click > Create > C# Script
). - Nómbralo
EnemigoPersecucion
y ábrelo. - 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
- Asegúrate de que el jugador tenga el
Tag "Player"
:- Selecciona el jugador en la Jerarquía.
- En el
Inspector
, cambia suTag
a"Player"
. - Si
"Player"
no existe, agrégalo enAdd Tag > + Player
.
📌 Paso 6: Asignar el Objetivo en el Inspector
- Selecciona el
Enemigo
en la Jerarquía. - En el
Inspector
, busca el campoObjetivo
dentro del scriptEnemigoPersecucion
. - Arrastra el
Jugador
desde la Jerarquía al campoObjetivo
.
🎯 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.
