Mattoni resistenti
Lezione 7 di 16 del corso Gioco Unity: Rompi-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
Medio- In
Brick, aggiungipublic int hits = 1epublic Color[] colors. La scena riempiecolorscon blu, arancione e rosso, per 1, 2 e 3 colpi rimanenti. - Scrivi
public void SetHits(int count): impostahitse mostra il colore del mattone corrispondente. - Modifica
Hit(): sottrai uno dahits. A 0 il mattone si rompe e assegna punti come prima; altrimenti mostra solo il suo nuovo colore. - In
GameManager, aggiungipublic int[] rowHits = { 2, 1, 1, 1, 1 };e assegna a ogni nuovo mattonerowHits[row]colpi tramiteSetHits.
Premi Play, indebolisci un mattone arancione nella fila superiore, poi premi Check.
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);
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.