Cadute
Lezione 14 di 19 del corso Gioco in Unity: Rompi i mattoni di Coddy.
Un mattone rotto a volte rilascia un potenziamento che cade verso la racchetta. Che venga rilasciato o meno dipende da un tiro casuale: Random.value è un numero decimale casuale compreso tra 0 e 1, quindi Random.value < 0.15f è vero circa 15 volte su 100. Mantenere la probabilità in un campo permette di regolarla e consente a un test di impostarla a 1 per ottenere un rilascio ogni volta oppure a 0 per non ottenerne mai.
Quale potenziamento viene rilasciato dipende da un secondo tiro casuale: un indice casuale in un array di prefabbricati. Random.Range con valori interi esclude il valore massimo, quindi Random.Range(0, array.Length) può selezionare ogni elemento. Il bottino di un nemico:
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);
}Un potenziamento cade a velocità costante spostandosi a ogni fotogramma e si distrugge quando scende sotto l'area di gioco, così quelli mancati non si accumulano. Il suo prefabbricato ha un Rigidbody cinematico e un collider trigger, così il sistema fisico sa che si muove e potrà rilevare quando raggiunge la racchetta.
Sfida
DifficileA volte i mattoni rotti rilasciano un potenziamento.
- In
PowerUp, aggiungifallSpeed = 3febottomY = -9f; inUpdate(), fai scendere il potenziamento alla velocità fallSpeed al secondo e distruggilo quando scende sotto bottomY. - In
GameManager, aggiungipublic GameObject[] powerUps;epublic float dropChance = 0.15f; - In BrickBroken, se
Random.value < dropChance, istanziapowerUps[Random.Range(0, powerUps.Length)]nella posizione del mattone.
Premi «Gioca» e rompi i mattoni: di tanto in tanto ne cade un potenziamento (il modo per raccoglierlo arriva dopo). Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// L'ultimo capitolo: i potenziamenti che cadono dai mattoni distrutti.
}
Tutte le lezioni di Gioco in Unity: Rompi i mattoni
Esercitati da solo: Playground Unity