Exemplo n.º 1
0
    public void GenerarPlataformas()
    {
        Plataforma aux1, aux2 = null;

        switch (Random.Range(0, 5))
        {
        case 0:
            aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[0], Quaternion.identity);
            aux1.CambiarSprite(FormaPlataforma.abiertaPorLaIzquierda);
            break;

        case 1:
            aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[1], Quaternion.identity);
            aux1.CambiarSprite(FormaPlataforma.cerradaPorAmbosLados);
            break;

        case 2:
            aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[2], Quaternion.identity);
            aux1.CambiarSprite(FormaPlataforma.abiertaPorLaDerecha);
            break;

        case 3:
            aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[0], Quaternion.identity);
            aux2 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[1], Quaternion.identity);
            aux1.CambiarSprite(FormaPlataforma.abiertaPorAmbosLados);
            aux2.CambiarSprite(FormaPlataforma.abiertaPorLaIzquierda);
            break;

        case 4:
            aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[0], Quaternion.identity);
            aux2 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[2], Quaternion.identity);
            aux1.CambiarSprite(FormaPlataforma.abiertaPorLaIzquierda);
            aux2.CambiarSprite(FormaPlataforma.abiertaPorLaDerecha);
            break;

        default:
            aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[1], Quaternion.identity);
            aux2 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[2], Quaternion.identity);
            aux1.CambiarSprite(FormaPlataforma.abiertaPorLaDerecha);
            aux2.CambiarSprite(FormaPlataforma.abiertaPorAmbosLados);
            break;
        }
        todasLasPlataformas.Add(aux1);

        if (aux2 != null)
        {
            todasLasPlataformas.Add(aux2);
        }
        tiempo = tiempoMinimo + (tiempoDeCreacionInicial - tiempoMinimo) * Mathf.Exp(Mathf.Log(1f - porcentajeHastaAlcanzarElNumeroDeInvoaciones) / numeroDeInvocacionesHastaAlcanzarElPorcentaje * numeroInvocaciones);
        float velocidad = distanciaEntrePlataformas / tiempo;

        foreach (Plataforma item in todasLasPlataformas)
        {
            item.cambiarVelocidad(velocidad);
        }

        Invoke("GenerarPlataformas", tiempo);
        numeroInvocaciones++;
    }
Exemplo n.º 2
0
    public void GenerarPlataformasInicio()
    {
        Vector2 vectorAbajo     = Vector2.down * distanciaEntrePlataformas;
        int     i               = 1;
        float   distanciaMaxima = Camera.main.ViewportToWorldPoint(Camera.main.rect.max).y - Camera.main.ViewportToWorldPoint(Camera.main.rect.min).y;

        while (distanciaEntrePlataformas * i < distanciaMaxima - distanciaEntrePlataformas)
        {
            Plataforma aux1, aux2 = null;

            switch (Random.Range(0, 5))
            {
            case 0:
                aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[0] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux1.CambiarSprite(FormaPlataforma.abiertaPorLaIzquierda);
                break;

            case 1:
                aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[1] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux1.CambiarSprite(FormaPlataforma.cerradaPorAmbosLados);
                break;

            case 2:
                aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[2] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux1.CambiarSprite(FormaPlataforma.abiertaPorLaDerecha);
                break;

            case 3:
                aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[0] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux2 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[1] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux1.CambiarSprite(FormaPlataforma.abiertaPorAmbosLados);
                aux2.CambiarSprite(FormaPlataforma.abiertaPorLaIzquierda);
                break;

            case 4:
                aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[0] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux2 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[2] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux1.CambiarSprite(FormaPlataforma.abiertaPorLaIzquierda);
                aux2.CambiarSprite(FormaPlataforma.abiertaPorLaDerecha);
                break;

            default:
                aux1 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[1] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux2 = Instantiate(Random.Range(0f, 1f) < probabilidadNube ? nube : suelo, posiciones[2] + Vector2.down * distanciaEntrePlataformas * i, Quaternion.identity);
                aux1.CambiarSprite(FormaPlataforma.abiertaPorLaDerecha);
                aux2.CambiarSprite(FormaPlataforma.abiertaPorAmbosLados);
                break;
            }
            todasLasPlataformas.Add(aux1);

            if (aux2 != null)
            {
                todasLasPlataformas.Add(aux2);
            }
            i++;
        }

        todasLasPlataformas.Add(Instantiate(suelo, posiciones[1] + vectorAbajo * i, Quaternion.identity));

        //posicionar al jugador
        Transform jugador = GameObject.FindGameObjectWithTag("Luz").transform;

        jugador.position = posiciones[1] + vectorAbajo * i + Vector2.down * (jugador.GetComponent <Collider2D>().bounds.min.y - jugador.GetComponent <Collider2D>().bounds.max.y);

        foreach (Plataforma item in todasLasPlataformas)
        {
            item.cambiarVelocidad(0f);
        }
    }