Menu
CoddyTech

Rompere

Lezione 6 di 16 del corso Gioco Unity: Rompi-mattoni di Coddy.

I mattoni non hanno un Rigidbody, ma la palla sì, e Unity invia OnCollisionEnter a entrambi gli oggetti coinvolti in una collisione. Quindi un mattone può accorgersi dell’urto da solo. Nello script del mattone, gameObject è il mattone e collision.gameObject è l’oggetto che lo ha colpito.

Il punteggio appartiene al GameManager e i mattoni sono copie di un prefab. Un prefab è una risorsa esterna alla scena, quindi i suoi campi non possono puntare al GameManager della scena nell’Inspector. Il GameManager assegna a se stesso GameManager.Instance statico in Awake(), così qualsiasi script può accedervi, comprese le copie dei prefab.

Un vaso che si rompe quando il giocatore ci finisce contro:

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Player")) Shatter();
}

public void Shatter()
{
    Destroy(gameObject);
}

Destroy(gameObject) rimuove il vaso. Destroy(collision.gameObject) rimuoverebbe il giocatore, mentre Destroy(this) rimuove solo lo script, lasciando il vaso al suo posto. Tenendo la rottura in un proprio metodo pubblico, anche altro codice, come una bomba o un potenziamento, può rompere il vaso.

challenge icon

Sfida

Medio
  1. In GameManager, aggiungi un int score e public void BrickBroken(Brick brick), che aggiunge i points del mattone a score.
  2. In Brick, scrivi public void Hit(): comunica a GameManager.Instance che questo mattone è stato distrutto, poi distrugge il mattone.
  3. Aggiungi OnCollisionEnter a Brick: quando l'oggetto con tag Ball lo colpisce, chiama Hit().

Premi Play, distruggi alcuni mattoni, poi Check.

Provalo tu

using UnityEngine;

public class Brick : MonoBehaviour
{
    public int points = 10;

    // Successivamente: la palla rompe un mattone e guadagna i punti corrispondenti.
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Gioco Unity: Rompi-mattoni