public void Generar() { if (OnIniciarGeneracionNivel != null) { OnIniciarGeneracionNivel(); } if (ContadorActualBloquesIniciales < 16) { ContadorActualBloquesIniciales += Random.Range(0, 2); } if (CantidadVelocidadGeneracion > .5f) { CantidadVelocidadGeneracion -= 0.05f; } Limpiar(); InfoHabitacionActual = generacionCuarto.GenerarCuarto(PosicionInicial, AgrupadorCuarto); GenerarPuertas(); Manejador.NoGenerar = false; if (OnTerminarGeneracionNivel != null) { OnTerminarGeneracionNivel(); } Pasar = true; }
public InformacionHabitacion GenerarCuarto(Transform PosicionadorInicial, Transform PadreColocar) { int AnchuraCuarto = 16; int LargoCuarto = 16; //GenerarTamaño(out AnchuraCuarto, out LargoCuarto); float offsetA = 0; int contadorPisos = 0; int contadorParedes = 0; List <Transform> EspaciosBloqueos = new List <Transform>(); List <Transform> EspaciosPuertas = new List <Transform>(); for (int contadorAncho = 0; contadorAncho < AnchuraCuarto; contadorAncho++) { float offsetL = 0; for (int contadorLargo = 0; contadorLargo < LargoCuarto; contadorLargo++) { GameObject Cubo = Instantiate(PrefabPiso, PadreColocar); Cubo.transform.position = new Vector3(PosicionadorInicial.position.x + offsetL, PosicionadorInicial.position.y, PosicionadorInicial.position.z + offsetA); Cubo.transform.rotation = GeneracionNivel.Instancia.RotacionAleatoria(); Cubo.name = "Piso " + contadorPisos; Cubo.GetComponent <MeshRenderer>().material = ObtenerTexturaPiso(); contadorPisos++; EspaciosBloqueos.Add(Cubo.transform); if (((contadorLargo == 0 || contadorLargo == LargoCuarto - 1)) || (contadorAncho == 0 || contadorAncho == (AnchuraCuarto - 1))) { float offsetAB = 0; for (int contadorAB = 0; contadorAB < AlturaBordes; contadorAB++) { GameObject Pared = Instantiate(PrefabDelimitador, PadreColocar); Pared.transform.position = new Vector3(PosicionadorInicial.position.x + offsetL, PosicionadorInicial.position.y + PrefabPiso.transform.localScale.y + offsetAB, PosicionadorInicial.position.z + offsetA); Pared.transform.rotation = GeneracionNivel.Instancia.RotacionAleatoria(); Pared.GetComponent <MeshRenderer>().material = ObtenerTexturaPared(); Pared.name = "Pared " + contadorParedes; contadorParedes++; offsetAB += PrefabDelimitador.transform.localScale.y; EspaciosBloqueos.Remove(Cubo.transform); if (contadorAB == 0 && ((contadorLargo > 0 && contadorLargo < (LargoCuarto - 1)) && contadorAncho == 0 || contadorAncho == AnchuraCuarto - 1)) { EspaciosPuertas.Add(Pared.transform); } } } offsetL += Cubo.transform.localScale.x; } offsetA += PrefabPiso.transform.localScale.z; } InformacionHabitacion Info = new InformacionHabitacion(); Info.EspaciosObstaculos = EspaciosBloqueos; Info.EspaciosPuertas = EspaciosPuertas; return(Info); }