In diesem Tutorial lernst du, wie du einen Blueprint erstellst, der neue Würfel im Level spawnt, wenn der Spieler auf einem Schalter steht. Verwende dieses Gameplay-Objekt, damit Spieler neue Würfel in einem beliebigen Rätselraum erzeugen können, in dem Würfel verloren gehen oder zerstört werden können.
Für den Würfel-Spawner erstellst du einen Blueprint, der nur die Spawn-Funktionalität enthält, damit du jedes Stück Geometrie oder jede Grafikressource nutzen kannst, um den Effekt von Würfeln zu erzeugen, die aus dieser Geometrie herausfallen.
Die Erstellung dieses Blueprint ist nicht zwingend erforderlich, wenn du dem Beispiel-Level gefolgt bist, aber du möchtest diese Würfel-Regenerationsmechanik vielleicht in dein Projekt aufnehmen, wenn du das Rätselabenteuerspiel weiter ausbaust.
Bevor du anfängst
Du solltest unbedingt die Themen verstehen, die in den vorherigen Abschnitten der Tutorialreihe Entwerfen eines Rätsel-Abenteuers behandelt wurden:
Blueprint-Grundlagen, einschließlich Blueprint-Interfaces, benutzerdefinierte Ereignisse und Variablen.
Du benötigst die folgenden Assets, die in Rätsel: Schalter und Würfel erstellt wurden:
Blueprint
BP_CubeBlueprint
BP_SwitchBlueprint-Interface
BPI_Interaction
Erstellen eines neuen Blueprint
Erstelle zuerst ein neues Blueprint-Asset für den Würfel-Spawner. Dieser Blueprint implementiert das Blueprint-Interface BPI_Interaction, damit er auf BP_Switch reagieren kann, das die Ereignisse in diesem Interface verwendet.
Führe die folgenden Schritte aus, um einen neuen Blueprint einzurichten:
Navigiere im Inhaltsbrowser zu Ordner Inhalt > Abenteuerspiel > Designer > Blueprints > Aktivierung.
Klicke mit der rechten Maustaste und wähle Blueprint-Klasse aus. Wähle im Klassenauswahl-Fenster die Actor-Klasse.
Nenne diesen Blueprint
BP_CubeSpawnund öffne ihn.Wechsle im Blueprint-Editor zum Tab EventGraph.
Klicke im oberen Bereich des Blueprint-Editors auf die Schaltfläche Klasse-Einstellungen.
Klicke im Details-Panel, im Abschnitt Interfaces auf das Hinzufügen-Dropdown-Feld neben Implementierte Schnittstellen und wähle BPI Interaction aus.
Klicke auf Kompilieren und Speichern.
Nachdem du das Interface BPI_Interaction hinzugefügt hast, siehst du im Panel Mein Blueprint einen neuen Abschnitt mit der Bezeichnung „Interfaces“. Dieser Abschnitt enthält die Events fnBPISwitchOff und fnBPISwitchOn, die Teil des BPI-Interaction-Interface sind.
In BP_CubeSpawn nutzt du das Event fnBPISwitchOn, um zu definieren, was passiert, wenn der Spieler auf einen Schalter tritt und dieses Event auslöst.
Erstellen der Würfel-Spawn-Logik
Bevor du die Logik zum Erzeugen der Würfel implementierst, überlege dir, wie das Würfel-Spawnsystem funktionieren soll:
Um einen Würfel zu spawnen, muss der Spieler den Schalter aktivieren, der das Interface nutzt, das du im vorherigen Abschnitt hinzugefügt hast.
Es sollte eine maximale Anzahl Würfel geben, die der Spieler spawnen kann, damit er das Gebiet nicht mit Würfeln überfüllt.
Wenn der Spieler versucht, mehr Würfel als die Maximalanzahl zu spawnen, zerstöre den ersten gespawnten Würfel. Mit einer Array-Variable behältst du die Übersicht über die gespawnten Würfel.
Der Würfel-Spawner sollte eine kurze Abklingzeit haben, damit Spieler nicht zu schnell neue Würfel spawnen können.
Prüfen der Würfel-Spawnbedingungen
Um das Event-Diagramm des Würfel-Spawners zu starten, prüfe zuerst, ob ein neuer Würfel spawnen kann und ob der Spieler die maximale Anzahl Würfel erstellt hat.
Führe die folgenden Schritte aus, um zu prüfen, ob ein neuer Würfel gespawnt werden kann:
Doppelklicke im Panel Mein Blueprint unter der Kategorie Interfaces auf das Interface fnBPISwitchOn, um es dem Diagramm hinzuzufügen.
Ziehe den Exec-Pin aus dem fnBPISwitchOn-Knoten und füge einen neuen Branch-Knoten hinzu.
Ziehe auf dem Branch-Knoten den Condition-Pin, wähle Auf Variable hochstufen aus und benenne diese Variable
CanSpawn. Mit dieser Variable kannst du prüfen, ob die Abklingzeit vorüber ist.Erstelle im Panel Mein Blueprint eine neue Variable mit dem Namen
CubesSpawnedvom Typ Integer. Damit verfolgst du die gespawnten Würfel im Level.Erstelle eine weitere Variable mit dem Namen
MaxNumCubes. Diese Variable legt die maximale Anzahl Würfel fest, die der Spieler spawnen kann.Richte MaxNumCubes ein:
Setze den Typ auf Integer.
Klicke auf sein Auge-Symbol, um es öffentlich und bearbeitbar zu machen.
Klicke im Details-Panel auf das Kategorie-Feld und gib
Setupein.Klicke auf Kompilieren und setze den Standardwert der Variable auf
3.Bisher sollte deine Variablenliste so aussehen:
Zieh auf dem Branch-Knoten den True-Pin weg und füge einen zweiten Branch-Knoten hinzu.
Ziehe den Condition-Pin vom zweiten Branch-Knoten und füge einen Less Than (<)-Knoten hinzu.
Richte den Less Than-Knoten ein, um zu prüfen, ob die Anzahl der gespawnten Würfel kleiner als die maximal zulässige Würfelanzahl ist:
Ziehe CubesSpawned aus der Variablen-Liste auf den oberen Input-Pin des Less Than-Knotens.
Ziehe die Variable MaxNumCubes auf den unteren Input-Pin.
Zählen der gespawnten Würfel und Zerstören zusätzlicher Würfel
Wenn die aktuelle Anzahl der Würfel, die der Spieler gespawnt hat, kleiner als das Maximum ist, verläuft die Ausführung über den True-Pin des zweiten Branch-Knotens. In diesem Fall kannst du direkt zu der Logik springen, die 1 zur Würfelanzahl hinzufügt, bevor ein Würfel gespawnt wird.
Führe die folgenden Schritte aus, um die Anzahl der erzeugten Würfel zu erhöhen:
Ziehe den True-Pin vom zweiten Branch-Knoten und füge einen Increment Int-Knoten hinzu. Verschiebe den neuen Knoten, um mehr Raum zwischen ihm und dem Branch-Knoten zu schaffen.
Ziehe CubesSpawned aus der Variablen-Liste auf den Input-Pin des Increment Int-Knotens.
Füge als Nächstes die Logik für das umgekehrte Szenario hinzu. Dabei ist der Wert CubesSpawned größer als der Wert Max Num Cubes oder wenn die Ausführung über den False-Pin von Branch läuft. Wenn der Spieler die maximale Anzahl Würfel erreicht hat, zerstöre den ältesten Würfel, bevor ein neuer gespawnt wird.
Befolge diese Schritte, um einen Würfel zu zerstören und Platz für einen neuen Würfel zu schaffen:
Ziehe den False-Pin des zweiten Branch-Knotens und füge einen Destroy Actor-Knoten hinzu.
Ziehe den Target-Pin vom Destroy Actor-Knoten und füge einen Get (a Copy)-Knoten hinzu.
Belasse den zweiten Input-Pin des Get-Knotens auf 0, da die Liste eines Arrays bei 0 beginnt und du das erste Element abrufen möchtest.
Ziehe den Array-Input-Knoten vom Get-Knoten weg und wähle Auf Variable hochstufen aus.
Nenne die neue Variable
SpawnedCubes. Du verwendest dieses Array, um jeden Würfel zu speichern, den der Spieler im Level spawnt.Ziehe den Exec-Pin vom Knoten Destroy Actor und füge einen Remove Index-Knoten hinzu.
Zieh seinen Array-Input und füge einen Get Spawned Cubes-Referenzknoten hinzu.
Doppelklicke auf den Draht zwischen dem zweiten Branch-Knoten und dem Increment Int-Knoten, um einen beweglichen Reroute-Knoten zu erstellen. Ziehe den Reroute-Knoten näher an den Increment-Int-Knoten.
Verbinde den Exec-Output-Pin des Remove Index-Knotens mit dem Reroute-Knoten.
(Du kannst den Remove Index-Knoten auch direkt mit dem Increment Int-Knoten verbinden.)
Bevor ein Würfel spawnt, erhöht der Blueprint nun entweder den CubesSpawned-Zähler oder löscht einen Würfel und erhöht dann den CubesSpawned-Zähler. Als Nächstes fügst du die Logik hinzu, die einen neuen Würfel spawnt.
Spawnen eines Würfels
Da du nun geprüft hast, ob der Spieler einen Würfel erstellen kann und sichergestellt hast, dass sich nicht zu viele Würfel im Level befinden, kannst du einen neuen BP_Cube-Actor spawnen.
Befolge diese Schritte, um einen neuen Würfel zu spawnen:
Ziehe den Exec-Pin vom Add-Knoten und füge einen Spawn Actor from Class-Knoten hinzu.
Richte den SpawnActor-Knoten ein:
Klicke auf das Dropdown-Menü neben dem Class-Pin, suche nach
BP_Cubeund wähle es aus. Der Knotenname wechselt von SpawnActor NONE zu SpawnActor BP Cube.Klicke mit der rechten Maustaste auf den orangefarbenen Spawn Transform-Pin und wähle Struktur-Pin spalten aus. Drei neue Pins ersetzen den „Spawn Transform“-Pin: Spawn Transform Location, Spawn Transform Rotation und Spawn Transform Scale.
Du musst mit der rechten Maustaste speziell auf den runden Spawn Transform-Pin klicken, nicht auf den gesamten Knoten.
Rechtsklicke in das Event-Diagramm, suche den Get Actor Transform-Knoten und wähle ihn aus. Rechtsklicke auf den Return Value-Pin und wähle Struktur teilen aus. Verbinde die Location- und Rotation-Pins mit den entsprechenden Pins im Spawn-Actor-Knoten.
Ziehe den Exec-Pin des SpawnActor-Knotens und füge einen Add-Knoten unter der Array-Kategorie hinzu. (Du kannst auch nach
Array hinzufügensuchen und den Add-Knoten auswählen.)Geh auf dem Add Array-Knoten wie folgt vor:
Ziehe den Array-Input-Pin und füge einen Get Spawned Cubes-Knoten hinzu.
Verbinde den unteren Input-Pin des Knotens mit dem Return Value-Pin des SpawnActor-Knotens.
Wenn ein Spieler einen Würfel spawnt, sollte er erst nach Ablauf einer Abklingzeit in der Lage sein, einen weiteren zu spawnen. Ziehe den Exec-Pin des Knotens Add Array und füge einen Set Can Spawn-Knoten hinzu. Belasse Can Spawn auf „False“ (hat kein Häkchen).
Implementieren einen Abklingzeit-Timers
Verwende die Variable CanSpawn und einen Delay-Knoten, um zu verhindern, dass der Spieler einen weiteren Würfel spawnt, bevor eine festgelegte Zeit verstrichen ist.
Befolge diese Schritte, um ein Ereignis zu erstellen und auszulösen, das den Abklingzeit-Timer für das Spawnen des Würfels zurücksetzt:
Klicke mit der rechten Maustaste auf eine freie Stelle im Event-Diagramm, suche nach Benutzerdefiniertes Event hinzufügen und wähle es aus.
Gibt dem neuen Event den Namen
EvResetSpawnund verschiebe es unter den Event fnBPISwirchOn-Knoten.Ziehe den Exec-Pin des EvResetSpawn-Eventknotens und füge einen Delay-Knoten hinzu.
Ziehe den Pin Duration auf dem Delay-Knoten und wähle Auf Variable hochstufen aus. Gib der Variable den Namen
SpawnCooldown.Richte die neue SpawnCooldown-Variable ein:
Stelle sicher, dass der Typ Float ist.
Klicke auf das Augensymbol, um sie öffentlich und bearbeitbar zu machen.
Ändere die Kategorie zu Setup.
Klicke auf Kompilieren und setze dann den Standardwert auf
1. Deine fertige Liste der Variablen sollte wie folgt aussehen:
Ziehe den Completed-Pin vom Delay-Knoten und füge einen Set Can Spawn-Knoten hinzu. Stelle sicher, dass der Wert Can Spawn dieses Knotens auf „True“ gesetzt ist.
Kehre zum Set Can Spawn-Knoten am Ende deiner Würfel-Spawn-Logik zurück. Ziehe den Exec-Pin des Knotens Set Can Spawn und füge einen EvResetSpawn-Knoten hinzu, um das Event auszulösen und die Spawn-Abklingzeitverzögerung zu aktivieren.
Klicke auf Speichern und Kompilieren.
Nun sollte dein Event-Diagramm wie folgt aussehen:
Wenn du den folgenden Auszug verwendest, stelle sicher, dass dein Blueprint die benutzerdefinierten Variablen, das Event und das BP-Interface enthält, die in den obigen Anweisungen erwähnt wurden.
Klicke auf Auszug kopieren, gehe zu deinem Ereignisdiagramm und drücke Strg+V, um diese Knoten in deinen Blueprint zu kopieren. Nachdem du die Logik in deinen Blueprint-Editor kopiert hast, musst du möglicherweise den blauen Ev Reset Spawn-Knoten löschen und ihn manuell nach dem Set Can Spawn-Knoten erneut hinzufügen.
Du kannst jetzt den Blueprint-Editor verlassen und zum Level-Editor zurückkehren.
Hinzufügen des „Cube Spawn“-Blueprint zum Level
Als Nächstes richtest du einen BP_CubeSpawn und einen BP_Switch im Level ein.
Der Würfel-Spawner-Blueprint hat keine visuellen Komponenten, sodass du ihn innerhalb einer beliebigen Geometrie oder eines beliebigen Grafik-Assets platzieren kannst, um den Effekt eines Würfels zu erzeugen, der aus der Geometrie herausfällt.
Wähle eine Position in deinem Level und verwende die Meshs im Ordner Inhalt > LevelPrototyping > Meshs, um Geometrie zu blockieren, die den Würfel-Spawner darstellt.
Wenn du das Beispiel-Level verwendest, kannst du ihn im Bereich hinter Raum 1 platzieren. In diesem Beispiel verwenden wir einen Zylinder, der ein Rohr darstellt, in dem die Würfel spawnen und aus dem sie herausfallen können.
Folge diesen Schritten, um dann einen BP_CubeSpawn in einem Level einzurichten:
Navigiere im Inhaltsbrowser zum Ordner Inhalt > Abenteuerspiel > Designer > Blueprints > Aktivierung.
Ziehe den
BP_CubeSpawn-Blueprint an die gewünschte Position im Level.Ziehe im Inhaltsbrowser den
BP_Switch-Blueprint in das Level innerhalb der Sichtlinie des Würfel-Spawners.Wähle den
BP_Switch-Actor im Level.Füge im Details-Panel im Abschnitt Setup ein neues Array-Element zur Interagieren-Objektliste hinzu.
Nutze die Dropdown-Liste neben Index [0], um den
BP_CubeSpawn-Actor auszuwählen. Damit wird das fnBPISwitchOn-Event dieses Schalters an denBP_CubeSpawn-Actor übergeben.Wähle den Actor
BP_CubeSpawnaus. Ändere optional die Variable Maximal zulässige Würfel zu der Anzahl der Würfel, die du im Level zulassen möchtest.
Wenn du jetzt das Spiel spielst, kannst du auf den Schalter treten, um neue Würfel zu erzeugen.
Als Nächstes
Um weiter an deinem Level zu arbeiten und Materialien, Beleuchtung, Nachbearbeitungseffekte, Sound und visuelle Effekte hinzuzufügen, probiere die Künstler-Serie der Tutorialreihe aus:
Solltest du daran interessiert sein, dein Projekt als eigenständiges Programm zum Testen und Teilen zu paketieren, sieh dir die folgende Dokumentation an: