Podsumowanie

Utrudnienia w grze

W serii dotyczącej projektowania gier w Unreal Engine tworzymy grę zręcznościową. Źródłem satysfakcji gracza w produkcjach tego gatunku jest pokonywanie przeszkód.  Aby mierzenie się z nimi dawało przyjemność, muszą stanowić wyzwanie. Dlatego też projektując grę, musimy postawić nacisk na zróżnicowanie przeszkód pod kątem ich rodzaju i stopnia trudności.

R4jqRAT1lNcgU
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Zwiększenie masy obiektów

Jednym z utrudnień w grze mogą być przedmioty ustawione na torze. Gracz musi je przesunąć, jeśli chce iść dalej. Aby sprawiało to trudność, można zwiększyć masę przeszkody. W obszarze Details zaznaczamy nazwę obiektu, odnajdujemy sekcję Physics, a w niej pole Mass(kg) i wpisujemy odpowiednią wartość.

Konsekwencje upadku

Innym utrudnieniem może być utrata życia po upadku na podłogę. Efekt ten uzyskamy, dodając kolizję do podłogi. W tym celu tworzymy nowy obiekt o typie Actorklasa nadrzędna ActorActor, któremu nadajemy komponent kolizji (w sekcji Components dodajemy komponent Box Collision). Stosujemy tu rozwiązania znane z e‑materiału Tworzenie przeszkód – Unreal Engine, etap VIIP4Rc73RqCTworzenie przeszkód – Unreal Engine, etap VII, tak aby po kolizji z podłogą gracz tracił kontrolę nad postacią. Musimy jednak pamiętać o odpowiednim dopasowaniu rozmiaru pudełka kolizji.

Ruchome przeszkody

Możemy zwiększyć poziom trudności rozgrywki poprzez spowodowanie, że przeszkody będą się poruszać, np. kręcąc w koło. W tym celu otwieramy blueprint przeszkody i wykonujemy następujące czynności:

  1. Tworzymy funkcję Event Tick, która uruchamia się w każdej klatce programu, przyjmuje ona parametr Delta Seconds, czyli odstęp czasu między klatkami.

  2. Łączymy funkcję Event Tick z funkcją Add Actor Local Rotation, która umożliwia obracanie przeszkód. Przyjmuje ona parametr Delta Rotation, który ma przypisane trzy wartości: X, Y, Z.

  3. Aby uniknąć sytuacji, w której szybkość obracania się przeszkody zależy od szybkości komputera, do parametru Delta Rotation funkcji Add Actor Local Rotation podłączamy odpowiedzialną za rotację funkcję Make Rotator, którą łączymy z funkcją Event Tick, używając funkcji Multiply do pomnożenia wartości Delta Seconds. Łączymy także funkcje Even Tick z funkcją Add Actor Local Rotation.

R1UzdnQOjYbll
Fragment blueprintu przeszkody, w którym widoczne są funkcje odpowiedzialne za jej obrót.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Aby móc decydować o prędkości każdej z przeszkód osobno, tworzymy nową zmienną typu Float. Aby można było ją modyfikować w oknie edytora, w blueprincie zaznaczamy ikonę oka. Chcąc zmienić szybkość obrotu przeszkody, zaznaczamy jej nazwę w sekcji Details, następnie odnajdujemy nazwę zmiennej odpowiedzialnej za prędkość i modyfikujemy jej wartość. Jeśli chcemy, by przeszkoda była nieruchoma, nadajemy jej wartość 0.

Nauczysz się

W kolejnych częściach serii zaimplementujesz sekwencję zdarzeń, które muszą zajść po tym, jak bohater straci życie. Zaplanujesz także warunki zwycięstwa w grze. W ostatnim kroku poprawisz kilka funkcjonalności, a następnie wyeksportujesz grę tak, aby można ją było przekazać graczom.

Słownik

klasa nadrzędna Actor
klasa nadrzędna Actor

jedna z dostępnych w Unreal Engine klas nadrzędnych określająca obiekt, który można umieścić w świecie gry

silnik gry komputerowej
silnik gry komputerowej

zintegrowane środowisko programistyczne stworzone dla osób projektujących gry komputerowe