Cómo crear oleadas de dragones con portal
Clase 28 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
Viendo ahora
El realismo del VR: Programando la IA de nuestro juego
Genera oleadas de dragones en Unity con control total: desde un portal que instancia enemigos con tiempos aleatorios hasta la preparación para que sigan un destino. Aprenderás a usar prefabs, corrutinas, arrays de GameObjects y funciones clave como StartCoroutine, Random.Range e Instantiate, evitando errores típicos al instanciar.
¿Cómo organizar prefabs y preparar el spawning?
Para ganar flexibilidad, se asigna a cada dragón un script de follow destination y se convierten en prefabs. Luego se elimina su presencia en escena y se crea un punto de spawning con un objeto vacío (create empty), que actuará como portal.
- Asignar el script de follow destination a todos los dragones.
- Convertir cada dragón en prefab arrastrándolo a la jerarquía de assets.
- Eliminar las instancias de la escena para evitar duplicados.
- Crear un objeto vacío como portal y ubicarlo donde convenga.
- Preparar un script específico del portal para instanciar enemigos de forma escalonada.
¿Cómo programar el portal con una corrutina en Unity?
El portal usa una corrutina que instancia enemigos en tiempos aleatorios hasta completar un cupo. Se definen variables públicas para elegir prefabs y cantidad total. Se elimina Update porque no es necesario, y se inicia la corrutina en Start con StartCoroutine.
¿Qué variables públicas necesitas?
- Un array público: GameObject[] enemies.
- Un contador público: int numberOfEnemies.
- El portal como objeto con este script y transform visibles.
¿Cómo instancias y pausas con aleatoriedad?
- Elegir un enemigo aleatorio con Random.Range sobre el array.
- Instanciar en la posición del portal con Instantiate.
- Pausar con yield return new WaitForSeconds(Random.Range(min, max)).
¿Cómo inicias la corrutina?
- Llamar a StartCoroutine en Start para que comience el flujo.
using UnityEngine;
using System.Collections;
public class Portal : MonoBehaviour
{
public GameObject[] enemies; // Prefabs disponibles.
public int numberOfEnemies; // Cupo total a generar.
private void Start()
{
StartCoroutine(GenerateNewEnemy());
}
private IEnumerator GenerateNewEnemy()
{
for (int i = 0; i < numberOfEnemies; i++)
{
GameObject enemy = enemies[Random.Range(0, enemies.Length)];
GameObject instance = Instantiate(enemy);
instance.transform.position = transform.position; // Aparición en el portal.
yield return new WaitForSeconds(Random.Range(10f, 20f));
}
}
}
Claves prácticas: - Dificultad controlada: la corrutina evita que todos aparezcan a la vez. - Ritmo impredecible: tiempos aleatorios hacen el juego más tenso. - Escalabilidad: el array permite añadir o quitar prefabs sin cambios extra.
¿Qué errores comunes y trucos de probabilidad debes evitar?
Un fallo típico con prefabs es no resetear la posición tras crearlos. Si el prefab conserva un transform distinto de 0,0,0, los enemigos aparecerán desplazados, incluso fuera de la zona visible. Solución: al crear los prefabs, resetear su posición a 0,0,0; haz lo mismo con el portal para coherencia.
- Error frecuente: prefabs con posiciones antiguas en su transform.
- Síntoma: enemigos instanciados detrás de montañas u objetos.
- Solución: resetear a 0,0,0 antes de usarlos para spawning.
- Consejo de probabilidad: para que un dragón salga más a menudo, repítelo más veces dentro de enemies. Cuantas más repeticiones, mayor probabilidad.
- Ajuste rápido: definir un cupo, por ejemplo, 10 enemigos para probar el flujo.
¿Quieres que ampliemos el sistema con rutas de movimiento y destinos aleatorios? Comparte tus dudas o ideas en los comentarios y afinamos el comportamiento de tus dragones.