GCM – Czerwiec: Robot. Przeciwnicy, pierwszy szkic.

Prace nad czerwcową grą idą jak burza 🙂 . Tym razem prezentowana aktualizacja jest niewielka. Do gry dodałem wczesny szkic mechanizmu obsługującego przeciwników. Będą oni przeszkadzać graczowi w osiągnięciu celu, jakim jest dojście do końca poziomu.

Jak za chwilę udowodnię w treści posta, dodanie wrogów do gry zbudowanej w Phaser jest naprawdę bardzo proste 🙂

Javascript tworzenie gier w phaserJS

Opisywaną dziś wersję gry można przetestować klikając w obrazek powyżej. Na moim githubie znajduje się repozytorium zawierające jak najaktualniejszy stan gry. Wersja przedstawiona w poście dostępna jest po zajrzeniu w źródło strony gry 🙂 .

Póki co w grze znajduje się tylko jeden rodzaj przeciwnika. Jest to bardzo niebezpieczna i bezlitosna lewikula. Powoli liwtuje ona korytarzami świata gry w oczekiwaniu na niczego niespodziewającego się gracza. Aby dodać tego wroga to gry, musiałem stworzyć osobny plik/”moduł”, zawierający metodę fabrykę. Oto treść pliku lewikula.js:

Tak jak pisałem wyżej, dodanie nowego obiektu do gry to teraz bułka z masłem. Tak naprawdę nie dzieje się tu nic, czego nie pokazywałbym do tej pory. Metoda createLewikula tworzy nowy sprite, który na końcu jest zwracany. Lewikula posiada swoją własną animacje, którą definiuje podczas jej tworzenia. Oczywiście, tak jak w przypadku innych elementów gry, włączam na tym obiekcie fizykę.

Zmieniam też faktyczny rozmiar spritea, chcę aby był mniejszy niż grafika przedstawiająca tego wroga. Lewikula będzie poruszać się z prędkością 100 w poziomie. Losowo wybieram, czy będzie poruszać się w lewo czy w prawo. Linijka body.bounce.x, oznacza, że gdy element na osi x natrafi na inny obiekt, zmieni kierunek poruszania się.

Przed zwrotem gotowego obiektu, uruchamiam jeszcze jego animację, chcę aby była puszczana w nieskończoność. I to wszystko, pierwszy rodzaj przeciwnika już gotowy.

Teraz wystarcz jedna linijka w stanie gry aby stworzyć nową instancje lewikuli:

Gdy obiekt przeciwnika jest gotowy, potrzebuje metody obsługującej interakcje przeciwników z innymi elementami znajdującymi się w grze. Wewnątrz stanu gry, wrzucam wszystkich wrogów do jednej tablicy, dzięki temu będzie mi łatwiej nimi operować. W metodzie upgrade stanu wywołuje metodę checkEnemiesCollision:

Jak widać, przekazuję jej wszystkie te elementy stanu, które mają jakiś wpływ na przeciwników. Jest tu też tablica enemies , zawierająca wszystkich wrogów.

Treść metody checkEnemiesCollision znajduje się w module config i wygląda tak:

I tutaj nie dzieje się nic niezwykłego. Przy pomocy pętli for, przechodzę przez każdego wroga i ustawiam odpowiednie zachowania w wypadku kolizji. Mam nadzieję, że ten fragment jest w miarę jasny. Jeżeli coś nie jest zrozumiałe, daj znać w komentarzach, chętnie wytłumaczę niejasne fragmenty kodu.

Na dziś to tyle. Już niedługo kolejne aktualizacje 🙂

Na koniec, jak zawsze, zachęcam do polubienia mojej strony na facebooku. Zawsze na bieżąco zamieszczam tam informacje o nowościach, więc warto polubić aby nie przegapić żadnego nowego wpisu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *