Mattoni resistenti
Lezione 7 di 19 del corso Gioco in Unity: Rompi i mattoni di Coddy.
Alcuni mattoni richiedono più di un colpo. Ogni mattone tiene il conto dei colpi che gli restano: un colpo ne toglie uno e solo il colpo che lo porta a 0 rompe il mattone e assegna punti. Fino ad allora il mattone cambia colore, così il giocatore può vedere quanto è ancora resistente.
Un array di colori compilato nell'Inspector associa il conteggio a un colore. L'elemento 0 è il colore per un colpo rimasto, l'elemento 1 per due, quindi il colore per un conteggio di n è l'elemento n - 1. Uno scudo con cariche funziona allo stesso modo:
public Color[] chargeColors; // elemento 0: 1 carica rimasta
void ShowCharges(int charges)
{
GetComponent<Renderer>().material.color = chargeColors[charges - 1];
}La lettura di material fornisce a questo renderer una copia propria del materiale la prima volta, così uno scudo o un mattone cambia colore senza ridipingere ogni copia del prefab. GameManager decide quanto è resistente ogni nuovo mattone: un int[] con un numero per ogni riga, partendo da quella superiore, permette alla riga superiore di richiedere più colpi delle altre.
Sfida
MedioI mattoni della riga superiore richiedono due colpi.
- In
Brick, aggiungipublic int hits = 1;,public Color[] colors;(la scena imposta i colori blu, arancione e rosso) eSetHits(int count): imposta il numero di colpi e il colorecolors[hits - 1]. Hit()sottrae un colpo: a 0 il mattone si rompe e assegna punti, altrimenti mostra il nuovo colore.- In
GameManager, aggiungipublic int[] rowHits = { 2, 1, 1, 1, 1 };e chiamabrick.SetHits(rowHits[row])per ogni nuovo mattone.
Premi «Gioca»: la riga superiore è arancione e diventa blu quando viene colpita. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Brick : MonoBehaviour
{
public int points = 10;
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Ball")) Hit();
}
public void Hit()
{
GameManager.Instance.BrickBroken(this);
Destroy(gameObject);
}
}
Tutte le lezioni di Gioco in Unity: Rompi i mattoni
Esercitati da solo: Playground Unity