Im vorherigen Schritt haben wir einen NPC erstellt, der sich vorwärts bewegen, nach links und nach rechts drehen kann, wenn er Befehle erhält. In diesem Schritt richten wir Spielpläne ein, auf denen sich der Charakter bewegen kann.
Bei diesem Spiel muss der Spielplan folgende Punkte kennen und verwalten:
Kachelgröße: Wie groß die Kacheln des Plans sind, damit der Charakter weiß, wie weit er sich bewegen soll.
Kamera: Welche Kamera verwendet werden soll, wenn der Charakter diesen Spielplan erreicht. Dazu verwenden wir das Kamera: Fixpunkt-Gerät.
Startposition: Die Position, an welcher der Charakter auf dem Spielplan beginnen soll. Dazu verwenden wir ein Creative Prop, damit wir es einfach als bearbeitbare Eigenschaft festlegen und es transformieren können.
Endziel: Das Endziel für den Charakter, in dessen Richtung er sich bewegen soll, was das Ende des Spielplans signalisiert. Dazu verwenden wir ein Auslösegerät, das signalisiert, wenn der Charakter darauf tritt.
Hindernisse: Hindernisse verhindern, dass der Charakter das Endziel sofort erreicht. Diese werden unter Hindernisse erstellen ausführlicher erklärt.
Jedes wird in der class des Spielplans nachverfolgt. Die Klasse verfügt über den concrete-Bezeichner, sodass es eine bearbeitbare Eigenschaft auf einem Verse-Gerät sein kann, und jedes Klassenmitglied verfügt über ein bearbeitbares Attribut, damit die Werte über UEFN geändert werden können.
# This class represents the gameboard and how it behaves.
# This class has the concrete specifier so it can be an editable property on a Verse device.
gameboard<public> := class<concrete>:
# The size of each tile on the gameboard. By default set to
# the default Fortnite tile size of 512x512x384.
@editable
TileSize<public>:vector3 = vector3{X:=512.0, Y:=512.0, Z:=384.0}
# The fixed point camera that provides a top-down view of the gameboard
Da der Spielplan nun mit seinen Eigenschaften definiert wurde, können wir sein Verhalten ergänzen:
Umgang mit dem Endziel: Wenn der Spielplan eingerichtet wird, abonnieren wir auf das
TriggeredEventdes Endzels. Wir verwenden einen Event-Handler und ein benutzerdefiniertes Event, um öffentlich zu signalisieren, dass das Endziel erreicht wurde, wenn das Auslösegerät vom Charakter ausgelöst wird. Für weitere Einzelheiten zur Persistenz in Verse, schau dir Coding Device Interactions an.Spielplan starten: Wenn es sich um den Start des Spielplans handelt, weise das Kameragerät allen Spielern zu.
Endspielplan: Wenn es sich um das Ende des Spielplans handelt, entferne das Kameragerät von allen Spielern.
Die folgende Tabelle enthält die vollständige Klasse für gameboard:
# This class represents the gameboard and how it behaves.
# This class has the concrete specifier so it can be an editable property on a Verse device.
gameboard<public> := class<concrete>:
# The size of each tile on the gameboard. By default set to
# the default Fortnite tile size of 512x512x384.
@editable
TileSize<public>:vector3 = vector3{X:=512.0, Y:=512.0, Z:=384.0}
# The fixed point camera that provides a top-down view of the gameboard
Hindernisse erstellen
Hindernisse verhindern, dass der Charakter das Endziel sofort erreicht. Wir verwenden in diesem Spiel Barrieregeräte als Hindernisse, um die Bewegung des Charakters zu blockieren, und Auslöser-Geräte, welche die Barrieren deaktivieren.
Unsere Definition der Klasse obstacle umfasst Folgendes:
IsObstaclePassed: Daten zur Speicherung, ob die Barrieren derzeit aktiviert oder deaktiviert sind. Logic-Typ, da es nur zwei Zustände gibt.
Barrieren: Barrierengeräte verbunden mit dem Hindernis. Das bedeutet, dass du mehr als ein Barrieregerät mit einem Auslöser verknüpfen kannst, der es deaktiviert.
BarrierDissolves: Cinematic sequences zum Spielen, wenn die Hindernisse überwunden werden.
BarrierAppears: inematic sequences zum Spielen, wenn die Hindernisse zurückgesetzt werden.
Auslöser: Ein Auslösegerät, das der Charakter erreichen muss, um das Hindernis zu deaktivieren.
Im Folgenden findest du die vollständige Klasse für die Darstellung der Hindernisse. Diese Klasse verfügt über den concrete-Bezeichner, sodass es eine bearbeitbare Eigenschaft auf einem Verse-Gerät sein kann.
# An obstacle on the gameboard, with an associated set of
# Barrier devices, Trigger devices that deactivate the barriers,
# and Cinematic Sequence devices that play sequences for barriers dissolving and appearing for visual feedback on what is happening.
# This class has the concrete specifier so it can be an editable property on a Verse device.
obstacle := class<concrete>:
# Data for storing whether barriers are currently enabled/disabled.
var IsObstaclePassed:logic = false
# The array of barriers for this obstacle.
Spielpläne hinzufügen
Da nun der Spielplan nun definiert ist, kannst du ein Array dieser Spielpläne zu deinem Verse-Gerät hinzufügen, wie du später in 6. sehen wirst. Managing the Game Loop sehen wirst.
Suche in dem Projekt, das du mit der Vorlage VKT - Verse Device Starter Games erstellt hast, im Outliner nach dem Gerät Verse-Kommandant-Minispiel und wähle es aus, um sein Details-Panel zu öffnen.
Im Details-Panel unter Spielpläne siehst du fünf Elemente, die den Plänen im Spiel entsprechen. Erweitere diese Elemente, um zu sehen, welche Geräte, Filmsequenzen und andere Eigenschaften für den Spielplan verwendet werden.
Du kannst Spielpläne hinzufügen, indem du Element hinzufügen für die Spielpläne auswählst, um weitere Level zum Spiel hinzuzufügen.
Du kannst Spielpläne entfernen, indem du das Dropdown-Feld neben dem zu entfernenden Spielplan auswählst, um Level aus dem Spiel zu entfernen.
Du kannst die Spielpläne neu anordnen, um die Reihenfolge der Level im Spiel zu ändern, indem du das Element gedrückt hältst und es an eine Stelle vor oder nach den anderen Spielplan-Elementen ziehst.
Um bestimmte Level zu testen, kannst du die Pläne so anordnen, dass der zu testende Level der erste in der Liste ist.
Nächster Schritt
Wir haben die Spielpläne definiert und gezeigt, wie beliebig viele hinzugefügt werden. Im nächsten Schritt lernst du, wie du die Spielbretter so gestaltest, dass du lustige Rätsel entwickeln und Einschränkungen umgehen kannst.