Esempio n. 1
0
    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;
    }
Esempio n. 2
0
    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);
    }