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; }