Startseite

Catch Game — Teil 2

In Teil 1 haben wir ein einfaches Fangspiel zum Leben erweckt: ein Spieler, der sich bewegt, herabfallende Objekte — und die Freude, zu sehen, wie alles zusammen funktioniert. Jetzt ist es Zeit, dem Ganzen Bedeutung zu geben — einige Objekte sind gut, andere eher nicht. Wir zählen Punkte, definieren, was als Sieg gilt, und bereiten das Spiel behutsam auf echtes Gameplay vor. Kein Stress. Nur ein klarer Schritt nach dem anderen.

Schritt 1. Lade dein Projekt

Los geht’s. Starte Unity und öffne das Projekt Catch Game, das du in Teil 1 erstellt hast. Du findest deine Szene im Fenster Assets; doppelklicke, um sie zu laden. Falls du Teil 1 verpasst hast, kannst du hier zurückgehen und ihn nachholen.

Sobald deine Szene geladen ist, sollte dein Unity-Editor ungefähr so aussehen:

Unity-Editor mit geladenem Catch Game-Projekt
Catch Game-Projekt in Unity geladen – mit sichtbarem Spieler, Boden und Spawner-Objekten.

Schritt 2. Seitenwände hinzufügen

Unser Spieler kann derzeit links oder rechts aus der Szene fallen. Um das zu verhindern, fügen wir unsichtbare Wände hinzu. Erstelle ein neues leeres GameObject – entweder über GameObject → Create Empty oder per Rechtsklick im Hierarchy-Fenster und Auswahl von Create Empty. Benenne es in LeftWall um.

Wähle LeftWall aus, gehe im Inspector auf Add ComponentPhysics 2DBox Collider 2D. Klicke dann auf Edit Collider und passe den Collider im Szenenfenster mithilfe der grünen Griffe an. Nutze das Move Tool, um die Wand auf der linken Seite zu positionieren. Achte darauf, dass die Z-Position 0 ist. Du kannst bei Bedarf ein Gizmo-Symbol zur besseren Sichtbarkeit zuweisen.

Um die zweite Wand zu erstellen, dupliziere einfach LeftWall: Rechtsklick im Hierarchy-Fenster → Duplicate. Benenne die Kopie in RightWall um und verschiebe sie nach rechts. Jetzt kann der Spieler den Spielbereich nicht mehr verlassen.

Unity-Szene mit platzierten LeftWall- und RightWall-Colliders
Linke und rechte Wände wurden als unsichtbare Box Collider hinzugefügt, um den Spieler im Bild zu halten.

Schritt 3. Punkteanzeige hinzufügen

Lass uns eine einfache Oberfläche erstellen, um den Punktestand auf dem Bildschirm anzuzeigen. Gehe zu GameObject → UI → Text - TextMeshPro. Unity erstellt automatisch ein Canvas, das Objekt Text (TMP) und ein EventSystem. Wenn du TextMeshPro zum ersten Mal verwendest, wird Unity dich bitten, TMP Essentials zu importieren — einfach auf Import klicken.

Doppelklicke im Hierarchy-Fenster auf Canvas, um zur UI-Ansicht zu wechseln — du siehst ein weißes Rechteck, das den Bildschirm darstellt. Wähle Canvas aus und ändere im Inspector den UI Scale Mode auf Scale with Screen Size, damit sich die UI korrekt anpasst.

Benenne das Textobjekt in Score um. Setze im Inspector den Text auf 00. Aktiviere Auto Size und stelle die Ausrichtung horizontal und vertikal auf zentriert. Nutze dann das Rect Tool, um das Textfeld zu verschieben und zu skalieren — am besten platzierst du es oben im Bildschirm.

💡 Tipp: TextMeshPro-UI-Elemente bewegen sich nicht wie Sprites — du bewegst den Container. Verwende das Rect Tool (T), um das Textfeld zu verschieben oder anzupassen.

💡 Tipp: Der TextMeshPro-Inspector bietet viele Einstellungen. Du musst nur wenige ändern — wir halten es einfach und übersichtlich.

Score-Text im Canvas mit TMP-Einstellungen
Der Punktestand wurde dem Canvas hinzugefügt. Verwende Auto Size und zentriere die Ausrichtung, dann platziere den Text mit dem Rect Tool.

Schritt 4. Punktestand per Code anzeigen

Gehen wir zurück zur Hauptspielansicht. Du kannst auf die Main Camera im Hierarchy-Fenster doppelklicken, um sie zu fokussieren, oder zur Game-Registerkarte wechseln, um die vollständige Ansicht zu sehen.

Jetzt lassen wir den Punktestand während des Spiels automatisch aktualisieren. Öffne das Skript ItemChecker (Doppelklick im Assets-Fenster). Um mit dem TextMeshPro-UI-System zu arbeiten, füge diese Zeile ganz oben ein:

using TMPro;

Wir erstellen eine Referenz auf das Score-Objekt und greifen auf die Textkomponente zu, um die Anzeige bei jeder Änderung zu aktualisieren. Hier ist die vollständige, aktualisierte Version des Skripts:

using UnityEngine;
using TMPro;

public class ItemChecker : MonoBehaviour
{
    public int score;
    public GameObject scoreTextObject;
    private TMP_Text tmpText;

    void Start()
    {
        tmpText = scoreTextObject.GetComponent<TMP_Text>();
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag == "Good")
        {
            score += 10;
            Destroy(other.gameObject);
        }

        if (other.gameObject.tag == "Bad")
        {
            score -= 10;
            Destroy(other.gameObject);
        }

        tmpText.text = score.ToString();
    }
}

Vergiss nicht, dein UI-Objekt Score ins Feld Score Text Object im ItemChecker-Skript auf deinem Spielerobjekt zu ziehen.

ItemChecker-Skript mit zugewiesenem Score Text Object
Score-Objekt im Inspector zugewiesen – der Text aktualisiert sich nun automatisch beim Einsammeln von Objekten.

Schritt 5. Soundeffekte hinzufügen

Lass uns das Spiel mit Ton lebendiger machen – wir fügen Soundeffekte für das Einsammeln von Objekten hinzu. Wir verwenden eine einfache Methode: füge dem Spieler ein AudioSource-Komponent hinzu und spiele die Sounds direkt aus dem Skript ab.

Wähle zuerst deinen Spieler im Hierarchy-Fenster aus und klicke auf Add Component. Wähle AudioSource. Belasse alle Einstellungen im Standardzustand – wir verwenden es nur für kurze Effekte.

Öffne dann dein ItemChecker-Skript und ergänze es wie folgt:

public AudioClip okSound;
public AudioClip boomSound;
private AudioSource audioSource;

void Start() {
    audioSource = GetComponent<AudioSource>();
}

void OnTriggerEnter2D(Collider2D other) {
    if (other.tag == "Good") {
        audioSource.PlayOneShot(okSound);
    } else if (other.tag == "Bad") {
        audioSource.PlayOneShot(boomSound);
    }
}

Du kannst die verwendeten Soundeffekte hier herunterladen:

Speichere sie im Ordner Assets/Sounds und weise sie im Inspector zu.

Ziehe Ok und Boom aus dem Ordner Assets in die entsprechenden Felder des ItemChecker-Komponents.

💡 Tipp: Du kannst die Lautstärke direkt im AudioSource-Komponent anpassen, wenn die Sounds zu laut oder zu leise sind.

AudioSource und Sounds dem Spieler zugewiesen
AudioSource dem Spieler hinzugefügt, Sounds im Inspector zugewiesen.

Schritt 10. Oder… einfach lassen, wie es ist

Dies ist kein echter Schritt 10 – nicht, weil es nichts mehr zu tun gäbe, sondern weil dies ein guter Moment für eine Pause ist. Es gibt viele Möglichkeiten, das Spiel zu erweitern: Du könntest seitliche Trigger einbauen, sodass der Spieler nur Objekte von oben fängt, oder sogar die Tags der Objekte dynamisch ändern.

Aber das Ziel war nicht, etwas Großes zu bauen. Sondern etwas Klar verständliches. Wenn du neu in Unity bist – fang einfach an. Baue eine Sache, die funktioniert. Später kannst du immer noch mehr machen.

Und wer weiß – vielleicht wird aus diesem kleinen Fangspiel ja noch etwas anderes. Ersetze die fallenden Objekte durch Autos, ändere den Hintergrund zu einer Straße… und plötzlich ist es ein Rennspiel. 😉

Das war’s mit Teil 2 – gute Arbeit! 🎉