Home | Clases | Unity: Navegación | Ejercicio propuesto 5: Instanciar enemigos

Ejercicio propuesto 5: Instanciar enemigos


Ejercicio propuesto 5: 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));
Quaternion rotacionEnemigo = Quaternion.identity;
Instantiate(enemigo, posicionEnemigo, rotacionEnemigo);

//Espero un tiempo entre la creación de cada enemigo
yield return new WaitForSeconds(esperaEntreEnemigos);
}

//Espero un tiuempo entre oleadas de enemigos
yield return new WaitForSeconds(esperaEntreOlas);
}
}

}


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:



No obstante el ejercicio sería bastante mejorable haciendo que los enemigos no se pudieran instanciar sobre las barreras.
Fecha de publicación: 16/10/2019
Asignaturas: desarrollo de entornos interactivos multidispositivo
Temas: unity c# visual studio
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos