MapController.cs

Wymyśliłem sobie że wielkość mapy będzie określana przez czas jaki gracz na niej spędzi. Po lewej stronie ekranu powinien być widoczny slider, na którym będziemy mogli obserwować swój postęp. W przyszłości można wykorzystać go do zaznaczania etapów planszy.

Skrypt

Stworzymy sobie nowy GameObject, pod którego podepniemy skrypt.
Szkielet aplikacji powinien być dosyć przejrzysty, dlatego jedyna utworzona funkcja będzie zwiększała postęp na sliderze + sprawdzała czy nastąpił odpowiedni moment aby załadować kolejny level:

Właściwość Time.deltaTime oznacza przyrost czasu od ostatniej aktualizacji. Jeśli FixedUpdate wywołuje się domyślnie 50 razy w ciągu sekundy, to zmienna deltaTime będzie przechowywała 20ms. W ten sposób możemy tworzyć różnego rodzaju timery w grach – 50 wywołań deltaTime w ciągu sekundy zwiększy nam wartość o 1.0f;

UI Element – Slider

Slider jest elementem interfejsu gracza. Oznacza to, że dodając go do zakładki Hierarchii, automatycznie utworzony zostanie znany nam już Canvas.

Kontrolka paska postępu składa się domyślnie z kilku mniejszych elementów, np. tła, wypełnienia zaktualizowanego paska oraz kulki, która symbolizuje aktualną wartość.

Ustawiam także ‚przypięcie’ elementu jako rozciągnięcie po lewej stronie z zerowym marginesem od góry i od dołu. Dzięki temu pasek skalowany będzie wraz z rozdzielczośćią ekranu.

Ostatnim elementem zaznaczonym na załączonym obrazku są właściwości unikatowe dla kontrolki. W tym przypadku mamy do dyspozycji wartości – minimalną, maksymalną i aktualną. Poniżej tych pól, możemy w identyczny sposób jak przy tworzeniu guzików, wpiąć napisaną funkcję pod zdarzenie ‚On Value Changed’. Chwilowo nie będzie nam ona potrzebna.

Mamy zatem gotowe menu gry oraz makiety poziomu 1 i 2. Dodatkowo wprowadziliśmy zmianę poziomu co określony czas. Enemy spawner co kilka sekund dorzuca nam kolejne sekwencje wrogów (zaktualizowany skrypt w repozytorium). Gracz może poruszać się w obrębie ekranu + kolidować z przeciwnikami. Co następne? Nie wiem. Może GUI gracza: ze zdrowiem, liczbą żyć, highscore itp…