Menu
CoddyTech

Caídas

Lección 14 de 19 del curso Juego en Unity: Rompe ladrillos de Coddy.

A veces, un ladrillo roto suelta una mejora que cae hacia la paleta. Que la suelte depende de una tirada: Random.value es un número de punto flotante aleatorio entre 0 y 1, así que Random.value < 0.15f es verdadero aproximadamente 15 veces de cada 100. Mantener la probabilidad en un campo te permite ajustarla y también permite que una prueba la establezca en 1 para que siempre haya una caída o en 0 para que no haya ninguna.

Qué mejora cae se decide con una segunda tirada: un índice aleatorio en un arreglo de prefabs. Random.Range con enteros excluye el valor máximo, así que Random.Range(0, array.Length) puede elegir cualquier elemento. El botín de un enemigo:

public GameObject[] loot;
public float lootChance = 0.25f;

void DropLoot()
{
    if (Random.value >= lootChance) return;
    int pick = Random.Range(0, loot.Length);
    Instantiate(loot[pick], transform.position, Quaternion.identity);
}

Una mejora cae a velocidad constante al moverse por sí misma en cada fotograma, y se destruye cuando queda por debajo del área de juego, para que las que no se recogen no se acumulen. Su prefab tiene un Rigidbody cinemático y un collider de activación, por lo que el sistema de física sabe que se mueve y podrá detectar cuándo llega a la paleta.

challenge icon

Desafío

Difícil

A veces, los ladrillos rotos dejan caer una mejora.

  1. En PowerUp, añade fallSpeed = 3f y bottomY = -9f; en Update(), haz que caiga a una velocidad de fallSpeed por segundo y destrúyelo cuando esté por debajo de bottomY.
  2. En GameManager, añade public GameObject[] powerUps; y public float dropChance = 0.15f;
  3. En BrickBroken, si Random.value < dropChance, instancia powerUps[Random.Range(0, powerUps.Length)] en la posición del ladrillo.

Pulsa «Jugar» y rompe ladrillos: de vez en cuando, uno deja caer una mejora (lo siguiente será atraparla). Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

public class PowerUp : MonoBehaviour
{
    // El último capítulo: mejoras que caen de los ladrillos rotos.
}

Todas las lecciones de Juego en Unity: Rompe ladrillos

Practica por tu cuenta: Playground de Unity