Wróg na rad arze!
W tej części kursu stworzysz samoloty wroga, które będą się losowo pojawiać na planszy. Przygotujesz też najważniejszy element gry mechanizm określający zasadę ich poruszania się.
Dotychczas stworzyłeś nie tylko chmury, od których odbija się główny bohater gry (samolot), ale też opracowałeś mechanizm działania monet, czyli zbierania punktów. Skorzystałeś w tym celu z kilku reguł i przez to nauczyłeś się lepiej obsługiwać program GameSalad Creator. W tej części zajmiesz się tworzeniem samolotów wroga. Przeciwnicy będą poruszać się po planszy i odradzać losowo z lewej i prawej strony ekranu. Do dzieła!
Samolot wroga – podstawy działania
Uruchom program GameSalad Creator, przejdź do zakładki File w lewym górnym rogu i wybierz Open... Następnie otwórz projekt z grą, który zapisałeś poprzednio. Podobny plik znajdziesz też na płycie dołączonej do PC Formatu.
Krok 1
Zacznij od stworzenia nowego bohatera w obszarze Library, w zakładce Actors. Nazwij go WrógLewydoPrawej. Ten wróg będzie wyruszał z lewej strony i przemieszczał się w prawo, natomiast później stworzysz drugiego bohatera – samolot wroga o nazwie WrógPrawydoLewej.
Krok 2
Kliknij bohatera WrógLewydoPrawej i w obszarze Attributes w zakładce Actor zmień jego wielkość w polu Size na 40 – ustaw taką i wysokość, i szerokość (Width, Height).
Krok 3
Samolot wroga musi się poruszać, dlatego trzeba stworzyć odpowiedni atrybut. W tym celu wybierz z obszaru zachowań (Behaviors) atrybut o nazwie Change Velocity i wstaw do obszaru z regułami. W polu change movement to go in direction wpisz wartość 0, dzięki której samolot będzie leciał z lewej do prawej, natomiast w sekcji relative to zmień actor na scene, ponieważ samolot wroga ma latać w obrębie całego ekranu, nie zaś być uzależniony od innego bohatera.
Krok 4
Poniżej znajduje się funkcja at a speed of, co pozwala zmienić prędkość, z jaką ma się poruszać samolot wroga. W tym miejscu nie da się ustawić prędkości losowej, a jest ona niezbędna, aby zróżnicować poziom trudności – samolot wroga nie powinien się w pełni przewidywalny sposób. Aby przygotować prędkość losową, trzeba stworzyć nowy atrybut dla bohatera WrógLewydoPrawej. W obszarze Attributes w zakładce Actor kliknij plus i wybierz Real, aby stworzyć nowy atrybut. Nazwij go Prędkość.
Krok 5
Przeciągnij zachowanie Change Attribute z zakładki Behaviors na górę do obszaru Rules. W polu set wybierz Attributes, WrógLewydoPrawej i Prędkość, a w polu to wybierz <Functions>, random i kliknij dwukrotnie myszą.
Krok 6
Teraz zmień <min> na 140, a <max> na 220, zachowując pomiędzy nimi przecinek. Zapisz zmiany, klikając zielony ptaszek. Wartości 140 i 220 to prędkość minimalna i maksymalna samolotu wroga. W atrybucie Change Velocity, w polu at a speed of (w którym obecnie widnieje wartość 300), wskaż odpowiedni atrybut, czyli Attributes, WrógLewydoPrawej i Prędkość. Nie zapomnij usunąć wartości 300, która jest tutaj niepotrzebna.
Krok 7
Następny krok to przeciągnięcie bohatera WrogLewydoPrawej na scenę gry. Umieść go w górnej części sceny, ale poza jej granicą. Wciśnij przycisk Play – zobaczysz, że samolot wroga przeleci przez planszę. Następnie wciśnij przycisk Reset, aby uruchomić sekwencję od początku – zrób tak kilka razy i zauważ, że samolot wroga przelatuje z różną prędkością – raz wolniej, a raz szybciej. To możliwe dzięki temu, że stworzyłeś atrybut z minimalną i maksymalną prędkością.
Krok 8
Teraz potrzebny jest drugi samolot wroga, który będzie poruszał się z prawej do lewej. Zamiast tworzyć go od nowa, możesz zaznaczyć w obszarze Actors bohatera o nazwie WrógLewydoPrawej i trzymając wciśnięty klawisz Alt, stworzyć jego duplikat. Po stworzeniu duplikatu zmień jego nazwę na WrógPrawydoLewej. Ten bohater jest już gotowy, musisz jedynie w obszarze z regułami zmienić wartość w polu change movement to go in direction z 0 na 180, aby samolot wroga przemieszcza się z prawej do lewej.
Krok 9
Umieść teraz bohatera WrógPrawydoLewej na scenie gry, po prawej stronie, poza jej krawędzią. Wciśnij przycisk Play.
Reguły odradzania się wrogów
Przeciwnicy nie mogą jednak kończyć swojego zadania na pojedynczym przeleceniu przez planszę. Muszą się odradzać.
Krok 1
W obszarze Library, w zakładce Actors, stwórz nowego bohatera i nazwij go OdradzanieWroga. Ten „bohater” nie będzie widoczny w grze – będzie działał tak jakby „za kurtyną” i będzie odpowiadał za to, gdzie i kiedy odradzają się samoloty wroga.
Krok 2
W obszarze Attributes przejdź do zakładki Actor i kliknij ikonę plusa, aby stworzyć nowy atrybut – wybierz Integer. Następnie zmień jego nazwę na KtóraStrona i ustaw jego wartość na 1.
Krok 3
Dodatkowo stwórz jeszcze jeden atrybut w tym miejscu, ale tym razem wybierz Boolean. Ten atrybut może mieć tylko dwie funkcje: prawda (true – włącz) lub fałsz (false – wyłącz). Zmień jego nazwę na Odradzanie i zaznacz pole widoczne obok, aby wybrać w ten sposób wartość true.
Krok 4
Teraz w obszarze do tworzenia reguł stwórz regułę dla bohatera OdradzanieWroga, klikając przycisk plusa ze słowem Rule. Kolejno w polu type or drag in a condition wpisz Attribute i wciśnij Enter. Kliknij ikonę strzałki widoczną w nowo utworzonym polu i z okna Attribute Browser wybierz kolejno Attributes, OdradzanieWroga i Odradzanie. Obok pojawi się wartość true. Tutaj nie musisz nic zmieniać.
Krok 5
Do stworzonej właśnie reguły przenieś zachowanie Timer z zakładki Behaviors. Umieść je w sekcji do. To zachowanie pozwoli na wybór czasu, po jakim ma odradzać się samolot wroga.
Krok 6
Wybierz funkcję After (po upływie…) z rozwijanego menu Every, a obok wpisz 0.5, czyli pół sekundy, i zaznacz Run to Completion, aby przygotowana funkcja była realizowana w całości.
Krok 7
Przeciągnij atrybut Change Attribute do zachowania Timer, następnie wybierz z okna Change Attribute odpowiednio Attributes, OdradzanieWroga, Odradzanie. Obok w polu wpisz false. Teraz reguła działa w następujący sposób: jest domyślnie włączona (true), a po 0,5 sekundy zostaje wyłączona (false).
Krok 8
Stwórz nową regułę, klikając plus obok słowa Rule. Ponownie wpisz Attribute, wciśnij Enter i wybierz OdradzanieWroga i Odradzanie, ale wartość obok zmień z true na false. Następnie do pola <do> przeciągnij zachowanie <Timer>, zmień jego funkcję na After, wpisz wartość 1 i zaznacz Run to completion.
Krok 9
Do zachowania Timer przeciągnij kolejne, o nazwie Spawn Actor. To zachowanie polega na tym, na co wskazuje nazwa – odradza bohatera („spawnowanie” oznacza umieszczanie w świecie gry).
Krok 10
W zachowaniu Spawn Actor wybierz przy polu spawn actor: samolot WrógLewydoPrawej. Następnie przy polach in the direction oraz from position wybierz z menu rozwijanych funkcję scene, aby zachowanie odnosiło się do planszy gry, nie zaś samego bohatera.
Krok 11
W sekcji Position trzeba wybrać miejsce, gdzie znajdować będzie się bohater w momencie odrodzenia (pojawienia się na planszy). Samoloty wroga mają pojawiać się tam, gdzie je rozmieścisz, dlatego wartości w linii from position nie mogą wynosić 0 i 0. Zmień je odpowiednio (w Attributes) na OdradzanieWroga, Position i X (w pierwszym polu) i OdradzanieWroga, Position i Y (w drugim polu).
Krok 12
Na koniec dodaj jeszcze zachowanie Change Attribute do zachowania Timer, następnie wybierz Attributes, OdradzanieWroga i Odradzanie, a w polu obok wpisz true.
Krok 13
Wszystko to sprawia, że utworzona została pętla z wartościami true/false, która będzie odpowiadać za odradzanie wrogich samolotów jeden po drugim. Przejdź teraz na planszę gry, usuń kwadraty odpowiadające za wrogie samoloty, a w ich miejsce wstaw bohatera OdradzanieWroga, np. dwa kwadraty z lewej strony. Wciśnij przycisk Play. Zobaczysz, że samoloty wroga się odradzają, lecą z lewej do prawej i robią to z różną prędkością. Jest ich jednak za dużo – w grze trudno byłoby zbierać punkty, bo samoloty wroga są zbyt blisko siebie. Teraz czas, aby wprowadzić funkcję, która będzie odpowiadać za losowe odradzanie się wrogów.
Losowe pojawianie się wrogów
Aby gra nie stała się monotonna, przeciwnicy powinni pojawiać się nieregularnie.
Krok 1
Wróć do bohatera OdradzanieWroga i zestawu reguł, które stworzyłeś. W sekcji Timer (tej zawierającej zachowanie Spawn Actor) zmień wartość odradzania – zamiast 1 sekundy wybierz strzałkę skierowaną w dół i w nowym okienku wskaż Functions, random i kliknij dwukrotnie myszą. Teraz w polu na górze wpisz 1 zamiast min oraz 4 zamiast max. Dzięki temu samoloty wroga będą się losowo pojawiać na planszy co 1–4 sekundy. Kliknij Play, a przekonasz się, że samoloty z lewej strony pojawiają się już całkowicie losowo na planszy, w odstępach czasowych od 1 do 4 sekund.
Krok 2
Pozostało jeszcze opracować identyczną regułę dla samolotów z prawej do lewej. Przeciągnij bohatera OdradzanieWroga na planszę gry i umieść go z prawej strony. Kliknij go lewym przyciskiem myszy i teraz w obszarze Attributes w zakładce Actor zmień wartość KtóraStrona z 1 na 0. Robisz to po to, aby samoloty wroga z lewej miały wartość 1, a z prawej – 0. Dzięki temu będą one pojawiać się naprzemiennie, a nie równocześnie, co bardziej zróżnicuje rozgrywkę.
Krok 3
Aby samoloty z prawej strony zaczęły się pojawiać, przejdź do reguł i stwórz kopię reguły, która zawiera zachowania Timer i Spawn Actor. W tym celu zwiń regułę Rule, następnie wciśnij Alt i trzymając wciśnięty klawisz, przenieś ją na dół – stworzysz w ten sposób kopię. Możesz zmienić jej nazwę, np. na Wróg z Prawej, aby wprowadzić większy porządek.
Krok 4
W nowej regule, w polu spawn actor, wybierz WrógPrawydoLewej. Teraz po prawej stronie będzie odradzał się samolot wroga, ale ta reguła wymaga jeszcze jednej funkcji, w której zdefiniujesz, że ma ona działać tylko dla prawej strony ekranu, czyli wrogiego samolotu z wartością 0 w atrybucie KtóraStrona. Aby to zrobić, wpisz w regule w polu type or drag in a condition Attribute, a następnie wybierz Attributes, OdradzanieWroga, KtóraStrona i wpisz wartość 0, jeśli domyślnie nie została ona tak ustawiona.
Krok 5
Wróć do reguły z samolotami wroga z lewej strony i zmień jej nazwę na Wróg z Lewej. Dodaj taki sam atrybut jak w regule Wróg z Prawej, ale na końcu w KtóraStrona wpisz wartość 1. Gotowe! Wciśnij Play – zobaczysz, że samoloty wroga odradzają się z obu stron i w losowy sposób. Zapisz projekt.