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.
Sfida
Medio- In
GameManager, aggiungi unint scoreepublic void BrickBroken(Brick brick), che aggiunge ipointsdel mattone ascore. - In
Brick, scrivipublic void Hit(): comunica aGameManager.Instanceche questo mattone è stato distrutto, poi distrugge il mattone. - Aggiungi
OnCollisionEnteraBrick: quando l'oggetto con tagBalllo colpisce, chiamaHit().
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.
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.