Paper 2D Game: GameManager i GameMode

Zostaną również wprowadzone pewne poprawki w schemacie „EnemyCar” w celu interakcji ze schematem „GameManager”. Na końcu artykułu zostanie utworzony nowy „GameMode” do wykorzystania schematu „GameManager” jako HUD. 

  • GameManager

Utwórz nowy plan typu „HUD”. Wymaga to rozwinięcia opcji „Wszystkie klasy” i wyszukania hasła „HUD”:

Wpisz nazwę „GameManager” dla tego schematu.
Utwórz zmienne: „Score” (Integer), „Level” (Integer), „EnemyCarSpeed” (Float) i „Menu” (Boolean).

Gra może znajdować się w Menu, które wyświetla komunikat „Naciśnij ENTER, aby rozpocząć” lub działa. Jest to kontrolowane przez zmienną logiczną „Menu”. Zdarzenie BeginPlay przypisuje dodatnią wartość zmiennej „Menu”, więc gra rozpoczyna się w menu. Umożliwia również zdarzenia wejściowe do planu „GameManager”:

Po naciśnięciu klawisza Enter sprawdzane jest, czy gra jest w “Menu”, jeśli prawda, to wywoływane jest zdarzenie niestandardowe “StartGame”:

Niestandardowe zdarzenie „StartGame” przygotowuje zmienne i liczniki czasu dla nowej gry i tworzy instancję „PlayerCar” na pozycji (X = 320, Y = 1, Z = 100). Wartość osi Y wynosi „1”, więc „PlayerCar” znajduje się przed tłem, czyli Y = 0.

Zdarzenie „TimerCreateEnemyCar” jest początkowo wywoływane co 2 sekundy. Tworzy po prostu instancję „EnemyCar” w pozycji (X = 320, Y = 1, Z = 520), która znajduje się nad ekranem gry. W Blueprint „EnemyCar” została utworzona nowa zmienna, która zawiera odniesienie do „GameManager”. Tworzenie tej zmiennej pokazano poniżej w dostosowaniach „EnemyCar”.

Zdarzenie „TimerAddScore” jest wywoływane co 0,5 sekundy. Zwiększa punkty gracza zgodnie z wartością zmiennej „Poziom” pomnożoną przez 50.

Zdarzenie „TimerChangeLevel” jest wywoływane co 10 sekund. Oto niektóre z działań tego wydarzenia:

  • Zwiększa prędkość wrogiego samochodu w 25.
  • Zwiększa wartość zmiennej „Poziom”.
  • Odtwarza „TimerCreateEnemyCar” z niższym czasem w oparciu o bieżący poziom.
  • Sprawdza, czy jest na poziomie 5, aby wyłączyć „TimerChangeLevel”, ponieważ 5 to najwyższy poziom.

Wydarzenie „Receive Draw Hud” należy do klasy HUD . Służy do rysowania wyniku i poziomu na ekranie. Komunikat „Naciśnij ENTER, aby rozpocząć” jest wyświetlany, jeśli gra jest w menu.

Niestandardowe wydarzenie „Koniec gry” aktywuje menu, niszczy wszystkie wystąpienia „EnemyCar” i czyści wszystkie liczniki czasu. To wydarzenie zostanie wywołane przez „EnemyCar”, gdy gracz nachodzi na siebie.

  • EnemyCar

Zakończymy schemat „EnemyCar”, który rozpoczął się w poprzednim artykule . Musimy utworzyć zmienną odwołującą się do „GameManagera”. Zaznacz „Edytowalne” i „Ujawnij przy odrodzeniu”, abyśmy mogli przekazać odniesienie do GameManagera w momencie tworzenia „EnemyCar”, jak widać powyżej.

Zmień zdarzenie „Tick”  ,  tak aby korzystało ze zmiennej „EnemyCarSpeed” z „GameManager”:

Utwórz zdarzenie „ActorBeginOverlap”, które testuje kolizję z graczem i, jeśli wystąpi, powiadamia „GameManager” o zakończeniu gry.

Użycie powyższej akcji „Rzuć na” służy do sprawdzenia, czy Aktor, który się nakładał, jest „Samochodem Gracza”.

  • Tryb gry

Utwórz nowy plan typu „GameMode” i wpisz nazwę „GameMode2D”. Kliknij dwukrotnie schemat i zmień właściwość „Domyślna klasa pionków” na „Pion” iw „Klasie HUD” umieść „GameManager”: 

Wejdź do menu „Edycja-> Ustawienia projektu …”, kategoria „Mapy i tryby”. W „Default GameMode” wybierz „GameMode2D”, który tworzymy:

Tym samym zakończyliśmy realizację „Papierowej gry 2D”.


Źródło:https://romeroblueprints.blogspot.com/2015/07/paper-2d-game-gamemanager-and-gamemode.html