jairogarcíarincón

Instanciar enemigos


7.82K

Instanciar enemigos



Añade la interactividad necesaria para que los enemigos se generen en posiciones aleatorias del plano uno cada 5 segundos.

Para instanciar enemigos, vamos a necesitar crear un objeto vacío (GameManager) y asociarle un nuevo script llamado GameManager que se encargue de gestionar la creación de enemigos de forma secuencial.

Además, debemos crear un prefab del enemigo, arrastrando el objeto Enemigo a la carpeta Assets > Prefabs y borrándolo de la escena.

El código del script GameManager sería el siguiente:

using System.Collections;
using UnityEngine;
public class GameManager : MonoBehaviour {
public GameObject enemigo;
public Vector3 posicion;
public int numeroEnemigos;
public float esperaInicial;
public float esperaEntreEnemigos;
public float esperaEntreOlas;
void Start() {
//LLamo a la rutina de crear enemigos
StartCoroutine(crearEnemigos());
}
IEnumerator crearEnemigos()
{
//Espero un tiempo antes de crear enemigos
yield return new WaitForSeconds(esperaInicial);
//Bucle durante toda la vida del juego
while (true)
{
//Bucle de número de enemigos
for (int i = 0; i < numeroEnemigos; i++)
{
//Instancio el enemigo en una posición aleatoria del tablero
Vector3 posicionEnemigo = new Vector3(Random.Range(-posicion.x, posicion.x), posicion.y, Random.Range(-posicion.z, posicion.z));
Instantiate(enemigo, posicionEnemigo, Quaternion.identity);
//Espero un tiempo entre la creación de cada enemigo
yield return new WaitForSeconds(esperaEntreEnemigos);
}
//Espero un tiempo entre oleadas de enemigos
yield return new WaitForSeconds(esperaEntreOlas);
}
}
}
view raw unity-ai-06.cs hosted with ❤ by GitHub


Para que funcione, deberás ajustar los tiempos de espera indicados en la Inspector window del objeto GameManager, así como asociar el prefab Enemigo a la variable pública correspondiente:

Ejercicio 5. Instanciar enemigos


No obstante el ejercicio sería bastante mejorable haciendo que los enemigos no se pudieran instanciar sobre las barreras.


Publicado el 22 de Junio de 2025

unityc#visual studio