Menu
CoddyTech

Durchbruch

Lektion 6 von 19 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

Der Ball zerstört Ziegel und erhöht den Punktestand um deren Punkte.

  1. Füge in GameManager int score; und public void BrickBroken(Brick brick) hinzu, wodurch brick.points zum Punktestand addiert wird.
  2. Schreibe in Brick public void Hit(): GameManager.Instance.BrickBroken(this);, dann Destroy(gameObject);
  3. Rufe in OnCollisionEnter von Brick Hit() auf, wenn das Objekt mit Ball getaggt ist.

Drücke „Spielen“ und starte den Ball: Jeder Ziegel, den der Ball trifft, verschwindet. Drücke anschließend „Prüfen“.

Probier es selbst

using UnityEngine;

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

    // Als Nächstes: Der Ball zerstört einen Stein und erhält dessen Punkte.
}

Alle Lektionen in Unity-Spiel: Brick Breaker

Übe selbstständig: Unity-Playground