Menu
CoddyTech

Zerbrechen

Lektion 6 von 16 im Kurs Unity-Spiel: Brick Breaker von Coddy.

Die Ziegel haben kein Rigidbody, aber der Ball hat eines, und Unity sendet bei einer Kollision an beide Objekte OnCollisionEnter. Ein Ziegel kann den Treffer also selbst bemerken. Im Skript des Ziegels ist gameObject der Ziegel und collision.gameObject das Objekt, das ihn getroffen hat.

Der Punktestand gehört zum GameManager, und Ziegel sind Kopien eines Prefabs. Ein Prefab ist ein Asset außerhalb der Szene, daher können seine Felder im Inspector nicht auf den GameManager der Szene verweisen. Der GameManager weist sich selbst in Awake() dem statischen GameManager.Instance zu, sodass jedes Skript darauf zugreifen kann, auch Prefab-Kopien.

Eine Vase, die zerbricht, wenn der Spieler in sie hineinläuft:

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

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

Destroy(gameObject) entfernt die Vase. Destroy(collision.gameObject) würde den Spieler entfernen, und Destroy(this) entfernt nur das Skript, sodass die Vase stehen bleibt. Wenn das Zerbrechen in einer eigenen öffentlichen Methode bleibt, kann auch anderer Code, etwa eine Bombe oder ein Power-up, die Vase zerbrechen.

challenge icon

Aufgabe

Mittel
  1. Füge in GameManager ein int score und public void BrickBroken(Brick brick) hinzu, wodurch die points des Ziegelsteins zu score addiert werden.
  2. Schreibe in Brick public void Hit(): Die Methode teilt GameManager.Instance mit, dass dieser Ziegelstein zerstört wurde, und zerstört ihn anschließend.
  3. Füge OnCollisionEnter zu Brick hinzu: Wenn das mit Ball markierte Objekt den Ziegelstein trifft, rufe Hit() auf.

Drücke Play, zerstöre ein paar Ziegelsteine und klicke dann auf Check.

Probier es selbst

using UnityEngine;

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

    // Als Nächstes: Der Ball zerstört einen Ziegelstein und erzielt die entsprechenden Punkte.
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Unity-Spiel: Brick Breaker