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