Exemplo n.º 1
0
    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;
    }
Exemplo n.º 2
0
    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;
            }
        }
    }