IEnumerator SpawnOleada(oleada _oleada) { //Debug.Log("Spawn Oleada: " + (ContadorOleadas+1)); Estado = SpawnState.SPAWNING; SliderOleada.value = 0; SliderOleada.maxValue = NumeroEnemigos; for (int i = 0; i < NumeroEnemigos; i++) { crear(_oleada); //print("enemigo: " + i); if (PlayerState.ToString() == "muerto") { yield break; } yield return(new WaitForSecondsRealtime(tiempoCreacion)); } Estado = SpawnState.WAITING; yield break; }
public void crear(oleada _Oleada) { PosicionesActivas = new List <Transform>(); PosicionesActivas.Add(PosicionParacas); for (int x = 0; x < posiciones.Length; x++) { float dist = Vector3.Distance(posiciones[x].position, jugador.position); if (x > 4 && rangoDistancia < dist) { PosicionesActivas.Add(posiciones[x]); } } total = 0; for (int i = 0; i < _Oleada.enemigos.Length; i++) { total += _Oleada.enemigos[i].rareza; } float randomPoint = Random.value * total; for (int j = 0; j < _Oleada.enemigos.Length; j++) { if (randomPoint < _Oleada.enemigos[j].rareza) { if (_Oleada.enemigos[j].nombre == "Enemigo Bomba") { Vector3 SpawnPosition = new Vector3(0, 0, 0); //SpawnPosition = this.transform.position + Random.onUnitSphere * RangoCreacion; SpawnPosition = new Vector3(jugador.position.x, PosicionParacas.position.y, jugador.position.z); GameObject Objeto = Instantiate(_Oleada.enemigos[j].enemigo, SpawnPosition, _Oleada.enemigos[j].enemigo.transform.rotation); } else { int spawnPoint = Random.Range(0, PosicionesActivas.Count); if (spawnPoint == 0) { Vector3 SpawnPosition = new Vector3(0, 0, 0); Vector3 PositionSpawn = new Vector3((jugador.position.x + OffsetCaida.x), zonaAgua.position.y, zonaAgua.position.z); //float distA = Vector3.Distance(PositionSpawn,zonaAgua.position); //if(distA>TamañoZonaAgua.x)//No estamos en el agua //{ float PosicionXEnemigo = Random.Range(-OffsetCaida.x, OffsetCaida.x); if (PosicionXEnemigo <= 0) //izq { SpawnPosition = new Vector3(jugador.position.x - OffsetCaida.x, PosicionParacas.position.y, jugador.position.z); float DistanciaEnemigoagua = Vector3.Distance(SpawnPosition, zonaAgua.position); if (DistanciaEnemigoagua < TamañoZonaAgua.x) //cae en el agua { SpawnPosition = new Vector3(jugador.position.x - (OffsetCaida.x + (TamañoZonaAgua.x * 2)), PosicionParacas.position.y, jugador.position.z); } } else //der { SpawnPosition = new Vector3(jugador.position.x + OffsetCaida.x, PosicionParacas.position.y, jugador.position.z); float DistanciaEnemigoagua = Vector3.Distance(SpawnPosition, zonaAgua.position); if (DistanciaEnemigoagua < TamañoZonaAgua.x) //cae en el agua { SpawnPosition = new Vector3(jugador.position.x + (OffsetCaida.x + (TamañoZonaAgua.x * 2)), PosicionParacas.position.y, jugador.position.z); } } GameObject Objeto = Instantiate(_Oleada.enemigos[j].enemigo, SpawnPosition, _Oleada.enemigos[j].enemigo.transform.rotation); //} /*else//si estamos en el agua * { * float DistDer = Vector3.Distance(PositionSpawn,ZonaDerecha.position); * float DistIzq = Vector3.Distance(PositionSpawn,ZonaIzquierda.position); * * if(DistDer<DistIzq)//si estamos a la derecha del agua * { * SpawnPosition = new Vector3(ZonaDerecha.position.x, PosicionParacas.position.y, jugador.position.z); * GameObject Objeto = Instantiate(_Oleada.enemigos[j].enemigo,SpawnPosition , _Oleada.enemigos[j].enemigo.transform.rotation); * } * else if(DistIzq<=DistDer)//si estamos en la izquierda del agua * { * SpawnPosition = new Vector3(ZonaIzquierda.position.x, PosicionParacas.position.y, jugador.position.z); * GameObject Objeto = Instantiate(_Oleada.enemigos[j].enemigo,SpawnPosition , _Oleada.enemigos[j].enemigo.transform.rotation); * } * * }*/ } else { GameObject Objeto = Instantiate(_Oleada.enemigos[j].enemigo, PosicionesActivas[spawnPoint].position, _Oleada.enemigos[j].enemigo.transform.rotation); } } //float dist = Vector3.Distance(posiciones[spawnPoint].position, jugador.position); return; } else { randomPoint -= _Oleada.enemigos[j].rareza; } } }