Partikeleffekte

Unser Spiel wird immer lebendiger! Wir haben Soundeffekte und zusätzliche Animationen hinzugefügt, um das Einsammeln von Münzen noch befriedigender zu machen. Doch wir können noch einen Schritt weiter gehen, um visuelles Feedback zu verbessern: mit Partikeleffekten.

Partikeleffekte können einem Spiel unheimlich viel Leben einhauchen. Sie sind perfekt, um kurze, dynamische visuelle Ereignisse darzustellen, wie Explosionen, Rauch, Funken oder eben das Aufsammeln einer Münze.

In diesem Artikel wirst du:

  • Das Konzept von Partikelsystemen in Godot kennenlernen.
  • Den GPUParticles2D Node verwenden, um einen Partikeleffekt für unsere Münze zu erstellen.
  • Die verschiedenen Eigenschaften eines Partikelsystems konfigurieren
  • Den Partikeleffekt über unser Script auslösen, wenn eine Münze eingesammelt wird.

Was sind Partikelsysteme in Godot?

In Godot erstellst du Partikeleffekte meist mit einem GPUParticles2D Node (für 2D-Spiele). Dieser Node allein macht noch nichts. Er benötigt zwei Hauptkomponenten, um Partikel zu erzeugen und zu steuern:

  • Texture: Das ist das Bild, das für jeden einzelnen Partikel verwendet wird (oft ein kleiner Kreis, Stern, Punkt, etc.).
  • ProcessMaterial: Eine Ressource, die definiert, wie sich die Partikel über ihre Lebenszeit verhalten (Geschwindigkeit, Richtung, Schwerkraft, Farbe, Größe etc.).

Darauf achten: CPUParticles2D vs. GPUParticles2D

  • CPUParticles2D: Auf dem Prozessor berechnet. Gut für wenige Partikel oder individuelle Kontrolle. Langsam bei vielen. Wird jedoch seitend Godot nicht mehr aktiv weiterentwickelt.
  • GPUParticles2D: Auf der Grafikkarte berechnet. Sehr schnell für viele Partikel (Zehntausende). Weniger direkte Code-Kontrolle (oft Shader nötig).

Empfehlung: Nimm GPUParticles2D für die meisten Effekte; CPUParticles2D nur für spezielle Fälle mit wenigen Partikeln und volle Partikelkontrolle per Code notwendig.


Schritt 1: Partikel-Effekt zur Münze hinzufügen

Diese Partikel sollen von der Münze ausgehen, wenn sie eingesammelt wird. Der CPUParticles2D Node gehört also in die Coin-Scene.

  1. Öffne deine Szene coin.tscn.
  2. Wähle im Scene Dock den Root-Node Coin (Area2D) aus.
  3. Füge als Kind einen GPUParticles2D Node hinzu. Klicke auf den „+“ Button (Child Node hinzufügen), suche GPUParticles2D und klicke „Create“. Benenne ihn zum Beispiel in CollectParticles um.

Schritt 2: Den Partikeleffekt konfigurieren

Nachdem wir den GPUParticles2D Node hinzugefügt haben, müssen wir ihn im Inspector konfigurieren, um das gewünschte Verhalten zu erzielen.

  1. Wähle den CollectParticles Node im Scene Dock aus und gehe in den Inspector. Hier konfigurieren wir das System:
    • Emitting: Deaktiviere das Häkchen. Wir wollen die Partikel per Script starten, nicht dauerhaft emittieren.
    • Amount: Die Anzahl der Partikel, die bei einem „Schuss“ erzeugt werden (z.B. 25).
    • Time -> Lifetime: Wie lange jedes einzelne Partikel existiert (z.B. 1.0 Sekunden).
    • Time -> One Shot: Aktiviere das Häkchen. Das sorgt dafür, dass die Partikel nur einmalig als „Burst“ ausgesendet werden, wenn Emitting von false auf true wechselt.
    • Drawing -> Visibility Rect
    • Process Material: Klicke auf das leere Feld -> „New ParticleProcessMaterial“. Klicke dann auf die neu erstellte Ressource, um ihre Eigenschaften zu öffnen.
      • ParticleProcessMaterial Eigenschaften: Hier kannst du das Verhalten der Partikel einstellen. Experimentiere später damit! Für jetzt:
        • Spawn -> Position -> Emission Shape: Fläche, auf der die Partikel entstehen. Wähle Sphere.
        • Spawn -> Position -> Emission Sphere Radius: Die größe des Emmision Shapes (z. B. 48, was die Größe unserer Münze entspricht.
        • Spawn -> Velocity -> Spread: Die Streuung der Partikel. 180 bedeutet in alle Richtungen, 0 in einem Halbkreis (z. B. 180.).
        • Accelerations -> Gravity: Setze „Gravity“ auf (0, 0), damit die Partikel nicht nach unten fallen.
        • Accelerations -> Radial Accel: Legt die kreisförmige Beschleunigung fest. Da wir eine runde Münze haben, ist dies hier passend (z.B. min: 50; max: 150)
        • Display -> Scale: Größe der einzelnen Partikel (z.B. min: 0,05; max 0,1)
        • Scale: Setze z.B. „Scale Min“ und „Scale Max“ auf 0.5 und 1.0, damit die Partikel eine zufällige Größe haben.
        • Texture: Gehe zurück im Inspector zum CollectParticles Node. Suche die Eigenschaft „Texture“. Klicke auf das leere Feld -> „Load“. Wähle eine kleine Textur für die Partikel aus. Einr einfache weiße Stern-Grafik (z.B. star_06.png von OpenGameArt.org, hier muss der schwarze Hintergrund allerdings in transparent geändert werden) funktioniert gut.
          • Wählst du keine Textur aus, werden kleine Würfel als Partikel erzeugt. Diese kannst du dann via Display -> Scale in der Größe anpassen (z.B. min: 0,15; max 0,3).

Schritt 3: Partikel im Script auslösen

Jetzt verbinden wir den Partikeleffekt mit dem Einsammeln der Münze in unserem coin.gd Script.

  1. Öffne das Skript coin.gd.
  2. Füge eine @onready Variable für den Partikel-Node hinzu, damit wir ihn im Script referenzieren können:

Gehe zur Funktion _on_Coin_body_entered(body). Innerhalb des if body.is_in_group("players"): Blocks, füge den Code ein, um die Partikel zu starten, nachdem der Sound abgespielt wurde und bevor die Münze entfernt wird.

Dein _on_Coin_body_entered sollte nun so aussehen:

Darauf achten: emitting = true für One Shot Partikel

Da wir die One Shot-Eigenschaft im ProcessMaterial des GPUParticles2D aktiviert haben, wird der Partikeleffekt nur einmal als „Burst“ ausgesendet, wenn wir emitting von false auf true setzen. Die Partikel werden dann ihre Lifetime lang existieren und verschwinden. Dies ist ideal für einmalige Effekte wie das Einsammeln unserer Münze.

Darauf achten: hide() versteckt auch die Partikel

Damit wir die Partikel auch sehen können, dürfen wir nicht mehr einfach nur den Node verstecken (vorher: hide()), sondern wie verstecken lediglich die Animation. Der Node wird erst zerstört, wenn der Soundeffekt fertig abgespielt ist (await collect_sound.finished). Partikel, die dann noch existieren, werden ebenfalls ausgeblendet.


Schritt 4: Speichern und Ausführen

  1. Speichere dein coin.gd Skript (Strg + S) und die Szene coin.tscn (Strg + S).
  2. Führe das Projekt aus (F5).

Ergebnis:

Wenn du nun Münzen einsammelst, sollten dort Partikel erscheinen, die den Effekt des Einsammelns visuell verstärken!


Dein nächster Schritt

Fantastisch! Du hast gelernt, wie man Partikeleffekte in Godot erstellt und steuert. Wir haben nun ein noch dynamischeres Spielerlebnis geschaffen. Du hast gelernt:

  • Die Grundlagen des GPUParticles2D Nodes.
  • Wie man eine ParticleProcessMaterial konfiguriert, um das Verhalten der Partikel zu steuern (Geschwindigkeit, Größe, Lebenszeit, etc.).
  • Wie man Partikel-Texturen zuweist.
  • Wie man One Shot-Partikel per Script auslöst.

Als Nächstes werden wir unserem Spiel ein grundlegendes User Interface (UI) hinzufügen, um den Fortschritt unserer Spieler:innen anzuzeigen. Wir erstellen ein HUD (Heads-Up Display), das die Anzahl der gesammelten Münzen darstellt. Das führt uns in die Welt der Control Nodes und wie wir Text und Zahlen auf dem Bildschirm aktualisieren können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..