W poprzednim kroku utworzyliśmy postać niezależną, która może poruszać się w przód, a także obracać w lewo lub w prawo po otrzymaniu poleceń. Natomiast w tym kroku skonfigurujemy plansze, po których ta postać będzie mogła się poruszać.
Na potrzeby tej gry plansza musi mieć następujące właściwości i nimi zarządzać:
Rozmiar kafelka: Określa wielkość kafelków na planszy, aby postać wiedziała, jak daleko ma się przesunąć.
Kamera: Określa kamerę, która ma być zastosowana, gdy postać dotrze do tej planszy. W tym przypadku zastosujemy urządzenie kamery stałopunktowej.
Pozycja początkowa: Pozycja początkowa postaci na planszy. W tym celu użyjemy Rekwizytu trybu kreatywnego, aby móc z łatwością ustawić go jako właściwość edytowalną i uzyskać jej przekształcenie.
Cel końcowy: Celem końcowym gracza jest dotarcie do miejsca, w którym nastąpi zasygnalizowanie końca planszy. W tym celu użyjemy urządzenia aktywatora, które zasygnalizuje, gdy postać na nim stanie.
Przeszkody: Przeszkody uniemożliwiają postaci natychmiastowe osiągnięcie celu końcowego. Szczegółowo objaśniono je w sekcji Tworzenie przeszkód.
Każda z tych właściwości jest śledzona w klasie class planszy. Klasa ma konkretny specyfikator, aby mogła być edytowalną właściwością w urządzeniu Verse, a każdy członek klasy ma edytowalny atrybut umożliwiający zmianę jego wartości z poziomu UEFN.
# 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
Po zdefiniowaniu planszy oraz jej właściwości pora dodać zachowanie:
Obsługa celu końcowego: Po skonfigurowaniu planszy zasubskrybujemy zdarzenie
TriggeredEventcelu końcowego. Wykorzystamy procedurę obsługi zdarzeń oraz zdarzenie niestandardowe, aby zasygnalizować publicznie osiągnięcie celu końcowego w momencie wyzwolenia urządzenia aktywatora przez gracza. Więcej szczegółów na ten temat zawiera sekcja Kodowanie interakcji z urządzeniem.Uruchamianie planszy: W momencie uruchomienia planszy przypisz urządzenie kamery do wszystkich graczy.
Zakańczanie planszy: W momencie zakończenia planszy usuń urządzenie kamery ze wszystkich graczy.
Poniżej zaprezentowano kompletny kod klasy 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
Tworzenie przeszkód
Przeszkody uniemożliwiają postaci natychmiastowe osiągnięcie celu końcowego. Urządzenia bariery wykorzystamy w tej grze do blokowania postaci możliwości ruchu, a za pomocą urządzeń aktywatorów będziemy dezaktywować bariery.
Nasza definicja klasy obstacle zawiera następujące elementy:
IsObstaclePassed: Dane do przechowywania informacji o tym, czy bariery są w danej chwili aktywne czy nieaktywne. Typ wartości logicznej ze względu na jedynie dwa dostępne stany.
Barriers: Urządzenia barier powiązane z przeszkodą. Oznacza to, że do jednego aktywatora można przypisać więcej niż jedno urządzenie bariery, które będzie dezaktywowane za jego pomocą.
BarrierDissolves: Sekwencje filmowe do odtworzenia w momencie pokonywania przeszkód.
BarrierAppears: Sekwencje filmowe do odtwarzania przy resetowaniu przeszkód.
Trigger: Urządzenie aktywatora, do którego postać musi dotrzeć, aby dezaktywować przeszkodę.
Poniżej zaprezentowano kompletną klasę reprezentującą przeszkody, która ma konkretny specyfikator, aby mogła być edytowalną właściwością w urządzeniu Verse.
# 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.
Dodawanie plansz
Po zdefiniowaniu planszy możesz dodać tablicę tych plansz do swojego urządzenia Verse, które zostanie omówione dalej w kroku 6. Zarządzanie pętlą gry.
W projekcie utworzonym na podstawie szablonu VKT – Gry pakietu startowego urządzeń Verse wyszukaj w Outlinerze urządzenie Minigra Komandor Verse i wybierz je, aby otworzyć dla niego panel Szczegóły.
W panelu Szczegóły w sekcji Plansze znajduje się pięć elementów odpowiadających planszom w grze. Rozwijając te elementy, możesz sprawdzić, jakie urządzenia, sekwencje filmowe oraz inne właściwości zastosowano w danej planszy.
Możesz dodawać plansze, wybierając opcję Dodaj element przy pozycji Plansze, co pozwoli dodać do gry więcej poziomów.
Aby usunąć plansze, wystarczy wybrać menu rozwijane przy planszy do usunięcia. W ten sposób można usuwać poziomy z gry.
Można również zmieniać kolejność plansz, aby zmieniać kolejność poziomów w grze, przytrzymując konkretny element i przeciągając go do pozycji przed innymi elementami plansz lub po nich.
Aby przetestować konkretne poziomy, można zmienić kolejność plansz w taki sposób, aby poziom do przetestowania znajdował się na liście jako pierwszy.
Następny krok
Zdefiniowaliśmy plansze i pokazaliśmy, w jaki sposób można dodać dowolną ich liczbę. W następnym kroku dowiesz się, jak projektować plansze, aby tworzyć ciekawe łamigłówki i obchodzić ograniczenia.