예제 #1
0
    public IEnumerator GerarFases()
    {
        // Mestre
        Fase master = Instantiate(FasePrefab, Vector3.zero, Quaternion.identity).GetComponent <Fase>();

        master.gameObject.transform.parent = paiFases.transform;
        master.corAtivado    = corAtivo;
        master.nome          = nomes[Random.Range(0, nomes.Count)];
        master.cenario       = Random.Range(cenarioInicial, cenarioInicial + QuantidadeDeCenarios);
        master.faseVencida   = faseVencida;
        master.tipoDeInimigo = inimigos[Random.Range(0, inimigos.Count)];

        master.skills.Add(skillsExistentes[Random.Range(0, skillsExistentes.Count)]);
        master.skills.Add(skillsExistentes[Random.Range(0, skillsExistentes.Count)]);
        master.skills.Add(skillsExistentes[Random.Range(0, skillsExistentes.Count)]);
        master.setCamada(numeroDeCamadas);

        int numeroAtual = 1;
        int densidade   = NumeroTotalDeFases / numeroDeCamadas;

        //Camadas
        for (int i = 0; i < numeroDeCamadas; i++)
        {
            for (int f = 0; f < densidade; f++)
            {
                Vector3 pos = PolarParaVetor(Random.Range(0f, 360f), (RaioMaximo / numeroAtual) + Random.Range(0f, offsetIndividual));
                while (!ChecarDistancia(pos, distanciaMinima))
                {
                    pos = PolarParaVetor(Random.Range(0f, 360f), (RaioMaximo / numeroAtual) + Random.Range(0f, offsetIndividual));
                    yield return(new WaitForEndOfFrame());
                }
                Fase fase = Instantiate(FasePrefab, pos, Quaternion.identity).GetComponent <Fase>();
                fase.setCamada(numeroAtual);
                fase.corAtivado = corAtivo;
                fase.nome       = nomes[Random.Range(0, nomes.Count)];
                fase.cenario    = Random.Range(cenarioInicial, cenarioInicial + QuantidadeDeCenarios);
                fase.gameObject.transform.parent = paiFases.transform;
                fase.tipoDeInimigo = inimigos[Random.Range(0, inimigos.Count)];

                fase.skills.Add(skillsExistentes[Random.Range(0, skillsExistentes.Count)]);
                fase.skills.Add(skillsExistentes[Random.Range(0, skillsExistentes.Count)]);
                fase.skills.Add(skillsExistentes[Random.Range(0, skillsExistentes.Count)]);
                fase.faseVencida = faseVencida;
                Fases.Add(fase);
            }
            numeroAtual++;
        }

        Fases.Add(master);
        GerarConexoes();
        AtivarFolhas();
        yield break;
    }