Ist dein Verse-Code noch geöffnet? Gut!
In dieser Übung wirst du Funktionen aufrufen, die deinem Fortnite-Charakter tatsächlich Schaden zufügen, wie bereits in Lektion 3: Zeit zum Üben!
Bevor du mit dem Programmieren beginnst, musst du ein Gerät zu deiner UEFN-Insel hinzufügen. Es heißt [Spieler-Spawner] (https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-player-spawn-pad-devices-in-fortnite-creative) und bewirkt, dass dein Spielercharakter am Ort des Geräts spawnen kann, anstatt in der Luft, dem Standard-Spawn-Ort in Fortnite. Damit der Code in dieser Übung funktioniert, wird der Spieler-Spawner benötigt.
Informationen zum Platzieren des Spieler-Spawner-Geräts findest du unter „Objektplatzierung“ im Abschnitt UEFN-Steuerung für Nutzer des Kreativmodus. Du kannst es überall auf deiner Insel platzieren.
Ein Teil des Codes, den du in dieser Übung verwendest, wird neu für dich sein, aber du hast die Möglichkeit zu überprüfen, was jede Zeile tut. Also keine Sorge, wenn du nicht alles auf Anhieb verstehst. In dieser Übung geht es darum, Funktionen aufzurufen.
Achte darauf, dass alle der folgenden Zeilen ganz am Anfang deiner Verse-Datei stehen. Diese teilen dem Verse-Compiler mit, welche Teile des eingebauten Verse- und Fortnite-Codes du in deinem von Verse erstellten Gerät verwenden wirst.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Playspaces }
using { /Verse.org/Simulation }
using { /Verse.org/Verse }
Als Nächstes schreibst du die Codezeilen, die deinem Fortnite-Charakter Schaden zufügen. Gehen wir Zeile für Zeile vor.
- Ruf eine Funktion namens
GetPlayspace()auf. Sie gibt einen Wert des Typsfort_playspacezurück, den du in einer Konstante namensPlayspacespeicherst. Du benötigst sie zum Holen der Spieler. - Ruf eine Methode namens
GetPlayers()auf der KonstantePlayspaceauf. Die Methode gibt ein Array vom Typplayerzurück. Ein Array ist ein Container, der mehrere Variablen desselben Typs in Verse aufnehmen kann. In diesem Fall enthält das ArrayAllPlayersalle Spieler in deinem Level. - Wie du bereits weißt, kannst du
ifverwenden, um Ja-/Nein-Fragen in deinem Code zu stellen. In diesem Beispiel verwendest duif, um zu fragen, ob auf der ersten Position des ArraysAllPlayerseine Variable steht. Der AusdruckAllPlayers[0]gibt den Wert der Variable zurück, falls sie auf dieser Position existiert. Und die KonstanteFirstPlayerwird mit dem Rückgabewert initialisiert. - Ein zweites
if, das innerhalb des ersten geschachtelt ist, fragt, ob die KonstanteFirstPlayereinen Fortnite-Charakter hat, indem die MethodeGetFortCharacter[]aufgerufen wird. Beachte die eckigen Klammern, die für den Aufruf verwendet werden. Damit werden Funktionen aufgerufen, die fehlschlagen können. Deshalb wirdifzum Aufruf dieser Funktion verwendet. FallsGetFortCharacter[]erfolgreich einen Wert des Typsfort_characterzurückgibt, wird die Konstante FortniteCharacter mit diesem Wert initialisiert. -
Schließlich kannst du jetzt, da du eine Konstante vom Typ
Fort_Characterhast, ihre MethodeDamage()aufrufen. Diese Methode braucht einen Parameter des Typsfloat. Das ist das Ausmaß des Schadens, der dem Charakter zugefügt wird. In der nächsten Lektion erfährst du mehr über Parameter.Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Damage(50.0)
Wenn du diesen Code ausführst, solltest du sehen, dass dein Fortnite-Charakter 50.0 Schaden erleidet, wenn dein Spiel beginnt!
Ganz schön cool, oder?
Vollständiges Script
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Playspaces }
using { /Verse.org/Simulation }
using { /Verse.org/Verse }
hello_world_device := class(creative_device):
# Wird ausgeführt, wenn das Gerät in einem laufenden Spiel gestartet wird
OnBegin<override>()<suspends>:void=
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Damage(50.0)