Zmienne instancji
Dzięki zmiennym instancji każdy potwór może mieć swój własny poziom zdrowia. Zmienna, jak sama nazwa wskazuje, jest wartością, która się zmienia. Zmienne są przechowywane osobno dla każdej instancji, stąd nazwa zmienna instancji.
Nadajmy naszym potworom zmienną instancji wskazującą ich poziom zdrowia. Kliknij potwora na pasku projektu lub pasku obiektów. Możesz też kliknąć go na planie. Na pasku właściwości pokażą się jego parametry. Kliknij Add/edit przy Edit variables (Edytuj zmienne).
Pokaże się okno zmiennych instancji. Przypomina ono znane już nam okno zachowań z tą różnicą, że możemy nadać obiektowi zmienne instancji. Kliknij ikonę plusa aby dodać nową zmienną.
W nowo otwartym oknie wpisz nazwę zdrowie, pozostaw Type (typ) ustawiony na Number (Liczba), a w polu Initial value (Wartość początkowa) wpisz 5. Sprawi to, że każdy potwór na początku gry będzie miał 5 punktów zdrowia. Każde trafienie odejmie 1 punkt zdrowia, a gdy zdrowie osiągnie zero, zniszczymy obiekt.
Gdy skończysz, kliknij OK. Zauważ, że zmienna jest teraz wyświetlona w oknie zmiennych i w parametrach potworów (umożliwia to szybką zmianę wartości początkowych w pasku właściwości, ale tworzenie i usuwanie zmiennych wciąż wymaga kliknięcia odnośnika Add / Edit).
Zmiana zdarzeń
Przejdź z powrotem do arkusza zdarzeń. Teraz niszczymy potwory gdy tylko trafi je pocisk. Sprawmy aby zamiast tego pociski odejmowały im jeden punkt zdrowia.
Znajdź zdarzenie Pocisk - on collision with Potwór. Zauważ, że teraz mamy tam akcję "zniszcz potwora". Zmieńmy to na "odejmij 1 od punktów zdrowia". Kliknij akcję "zniszcz potwora" prawym przyciskiem myszy i wybierz Replace (Zamień).
Pojawi się znane już okno wyboru akcji, ale tym razem nasze działanie zmieni wybraną przez nas akcję na inną. Wybierz Potwór -> Subtract from (Odejmij od, kategoria Instance variables) -> Zmienna instancji "zdrowie", wprowadź 1 w polu Value (Wartość). Kliknij Done. Teraz akcja powinna wyglądać tak:
Teraz gdy pocisk trafi potwora, odejmuje on mu punkt zdrowia i wybucha, ale nie mamy jeszcze zdarzenia, które zabija potwory gdy ich zdrowie osiągnie zero. Dodaj kolejne zdarzenie:
Warunek: Potwór -> Compare instance variable (Porównaj zmienną instancji) -> Zdrowie, Less or equal (Mniejsza lub równa), 0
Akcja: Potwór -> Spawn another object -> Wybuch, warstwa 1
Akcja: Potwór -> Destroy
Dlaczego zmienna ma być "mniejsza lub równa 0", a nie "równa 0"? Powiedzmy, że damy graczowi mocniejszą broń odejmującą 2 punkty zdrowia. Gdy będziemy strzelać do potwora, jego zdrowie będzie zmieniać się w następującym zakresie: 5, 3, 1, -1, -3... Zauważ, że zdrowie nigdy nie będzie wynosić dokładnie zero, więc potwór nigdy nie zginie! Warto więc wyrobić sobie nawyk sprawdzania czy wartość jest "mniejsza lub równa" za każdym razem gdy sprawdzamy czy wyczerpało się czyjeś zdrowie.
Uruchom grę. Teraz musisz strzelić do potworów po pięć razy aby je zabić!
Punkty
Dodajmy do gry punkty aby gracze wiedzieli jak im idzie. Do tego potrzebujemy kolejnej zmiennej. Pomyślisz pewnie aby dodać punkty jako zmienną instancji postaci gracza. To nie jest zły pomysł, ale pamiętaj, że zmienna jest przechowywana "wewnątrz" obiektu. Bez instancji nie ma zmiennych! Jeśli zniszczymy postać gracza, nie będziemy już wiedzieć ile ma punktów ponieważ zmienna przechowywująca liczbę punktów zostanie zniszczona razem z nią.
Zamiast tego możemy wykorzystać zmienną globalną. Zmienna globalna może przechowywać liczbę lub tekst tak jak zmienna instancji. Każda zmienna może przechowywać jedną liczbę lub jeden tekst. Zmienne globalne są dostępne w całej grze na wszystkich planach, co jest przydatne jeśli dodamy do gry więcej poziomów.
Kliknij prawym przyciskiem myszy wolne miejsce w arkuszu zdarzeń i wybierz Add global variable (Dodaj zmienną globalną).
Wprowadź nazwę Wynik. Pozostałych pól nie musisz zmieniać - początkowym wynikiem będzie 0.
Zmienna globalna jest wyświetlona jako wiersz w arkuszu zdarzeń, ale można ją odczytać z innych arkuszy zdarzeń i planów.
Uwaga: mamy też zmienne lokalne dotyczące mniejszego "zakresu" zdarzeń, ale nie musimy się nimi teraz przejmować.
Teraz dajmy graczowi punkt za każdym razem gdy zabije on potwora. W zdarzeniu "Potwór: zdrowie mniejsze lub równe 0" (gdy potwór zostanie zabity) kliknij Add action i wybierz System -> Add to (Dodaj do, kategoria Global & local variables) -> Wynik, wartość 1. Zdarzenie powinno wyglądać teraz tak:
Teraz gracz otrzymuje punkt po zabiciu potwora, ale w grze nie widać ile mamy punktów! Wyświetlmy ich liczbę używając obiektu tekstowego.