Cómo crear waypoints en Unity para enemigos
Clase 29 de 33 • Curso de VR con Unity
Contenido del curso
Creando nuestro mundo 3D en Unity
- 6

Crear terreno 3D en Unity con Standard Assets
08:42 min - 7

Creación de Escenarios en Unity: Terreno y Erosión Realista
10:19 min - 8

Texturización de terrenos en Unity: creación de entornos realistas
10:56 min - 9

Cómo pintar árboles en Unity para VR
06:54 min - 10

Añadir césped y efectos de viento en Unity 3D
06:57 min - 11

Configurar skybox de seis lados en Unity
06:53 min - 12

Integración de Armas y Escudo en Realidad Virtual con HTC Vive
12:09 min
El realismo del VR: Programando a nuestro personaje
- 13

Programación de Lógica de Armas en Realidad Virtual
10:22 min - 14

Mapeado de controles HTC Vive en Unity
10:08 min - 15

Controles VR: grip y gatillo en Unity
10:02 min - 16

Configuración de Bolas de Fuego en Unity para Realidad Virtual
09:21 min - 17

Disparo de bola de fuego en VR
10:11 min - 18

Corrección de bugs: recarga y audio en armas Unity
04:44 min - 19

Colliders y Rigidbody en el diseño de personajes y armas en Unity
08:25 min - 20

Sistema de vida reutilizable en Unity
05:23 min
El realismo del VR: Creación de HUD (Heads Up Display) y generando enemigos
- 21

HUD en VR: canvas anclado a cámara
08:50 min - 22

Configuración de Barras de Vida y Maná en Unity
05:54 min - 23

Programación de Daño en Videojuegos: Lógica de Armas y Magia
11:07 min - 24

Slider Unity: vida y maná en un script
08:00 min - 25

Cómo configurar un dragón enemigo en Unity
11:40 min - 26

Colliders y barras de vida para dragones
08:31 min - 27

Animaciones de Muerte y Desaparición de Enemigos en Unity
10:01 min - 28

Cómo crear oleadas de dragones con portal
11:24 min
El realismo del VR: Programando la IA de nuestro juego
Aprende a mover enemigos en Unity con la técnica de waypoints. Organiza la jerarquía, etiqueta objetos y programa un script para que tus dragones recorran el escenario y, a ratos, apunten al jugador. Todo con tags, arrays y selección aleatoria, de forma clara y práctica.
¿Cómo funciona el movimiento con waypoints en Unity?
Los puntos de ruta son objetos invisibles que guían a un enemigo de uno a otro. Pueden ser fijos (ida y vuelta) o aleatorios para hacer el comportamiento más interesante. Con una misma etiqueta, como "waypoint", es fácil localizarlos desde el script y administrar el recorrido.
- Los waypoints obligan al enemigo a moverse entre posiciones.
- Las rutas fijas son previsibles; las aleatorias aportan variedad.
- Las etiquetas unifican la búsqueda de objetos en escena.
¿Cómo crear y ubicar waypoints sin errores?
Primero ordena la jerarquía para evitar el caos. Un padre agrupa todos los puntos. Luego, duplica y reparte por el escenario, cuidando alturas y colisiones con el terreno.
- Crear un objeto vacío padre llamado "waypoints".
- Posicionarlo en 0,0,0 para referencia.
- Dentro, crear objetos vacíos hijos (por ejemplo, "WP").
- Añadir la etiqueta "waypoint" y asignarla a cada hijo.
- Duplicar con Command o Control D.
- Distribuir por distintas zonas del mapa.
- Revisar en vista lateral para que ningún punto quede dentro de montañas o suelo.
- Mantenerlos a una altura razonable. No enterrarlos.
¿Cómo programar el script follow destination?
El script FollowDestination gestionará la selección de destinos. Primero declara variables, después inicializa en Start y finalmente elige un punto aleatorio. En el siguiente paso, dentro de Update, se seguirá el destino actual y, al estar muy cerca, se cambiará a otro punto o incluso al jugador.
¿Qué variables necesitas para destinos, velocidad y jugador?
- Array de destinos: destinations de tipo GameObject[].
- Destino actual: destination de tipo Transform.
- Velocidad configurable: speed de tipo float (por defecto, 5).
- Referencia al jugador: player de tipo GameObject.
public class FollowDestination : MonoBehaviour
{
GameObject[] destinations; // Puntos de ruta etiquetados como "waypoint".
Transform destination; // Destino actual.
public float speed = 5f; // Velocidad (m/s aprox.).
GameObject player; // Referencia al jugador.
}
¿Cómo inicializar en start con etiquetas?
Aprovecha las tags para localizar todos los puntos de ruta a la vez, y una única búsqueda para el jugador con FindWithTag.
void Start()
{
destinations = GameObject.FindGameObjectsWithTag("waypoint");
player = GameObject.FindWithTag("jugador"); // Una única etiqueta para el jugador.
}
- Usa FindGameObjectsWithTag para un conjunto.
- Usa FindWithTag cuando existe un único objeto.
- Mantén las etiquetas consistentes en la escena.
¿Cómo elegir un destino aleatorio y preparar el siguiente paso?
Selecciona un índice aleatorio entre 0 y destinations.Length con Random.Range y toma el transform del objeto elegido. Guardar el último destino facilita cambiar al siguiente cuando el dragón llegue.
void Start()
{
destinations = GameObject.FindGameObjectsWithTag("waypoint");
player = GameObject.FindWithTag("jugador");
// Elegir un punto de ruta aleatorio como destino inicial.
destination = destinations[Random.Range(0, destinations.Length)].transform;
}
- Random.Range(0, destinations.Length) devuelve un índice válido.
- El movimiento hacia el destino se implementará en Update.
- Al estar muy cerca, cambia a otro waypoint o al player para aumentar el riesgo.
¿Dónde colocarías tus waypoints para lograr patrones de ataque interesantes? Cuéntalo en los comentarios y comparte tu enfoque.