Artykuły
Jak stworzyć strzelankę z widokiem z góry w programie Construct cz.4
19 września 2010 | Dział: Kursy | Odsłon: 1095

Część 4: Aspekty gry

Zdrowie

Tym razem sprawimy, że postać gracza będzie raniona gdy dotykają ją potwory. Dodajmy postaci gracza prywatną zmienną o nazwie Health. Tym razem niech początkowa wartość (Initial value) wyniesie 100.


W edytorze arkusza zdarzeń wstaw nowe zdarzenie: Monster: Collisions - Is overlapping another object, wybierz postać gracza i kliknij Finish. Dodaj akcję Player: Private variables - Subtract from value, wybierz Health i jako wartość wprowadź wyrażenie 20 * TimeDelta (utrata 20 punktów zdrowia na sekundę).


Dodaj kolejne zdarzenie - Player: Private variables - compare a private variable. Wybierz odpowiednio Health - Less or equal - 0. Dodaj akcję aby zniszczyć postać gracza.


No dobrze, teraz nasz postać ma 100 punktów życia i traci je gdy dotykają ją potwory. Po uruchomieniu gry, jeśli potwór będzie Cię za długo dotykać, znikniesz. Gracz jednak nie jest w żaden sposób informowany, że jest ranny! Dodajmy jakiś wizualny wskaźnik informujący o sytuacji. Wróć do edytora planu.

Porada:

Warstwa jest jak tafla szkła z namalowanymi obiektami. Warstwy mogą mieć też efekty, mogą mieć rożne odcienie lub być półprzezroczyste, a także można je przewijać w różnym stopniu.

Zwróć uwagę na pasek warstw. Zamierzamy umieścić informację o zdrowiu na osobnej warstwie. Ponieważ nie chcemy aby liczby przewijały się gdy się poruszasz, możemy posłużyć się warstwą, która się nie przewija. Oznacza to, że liczby zawsze będą w tym samym miejscu na ekranie. Przydatne, prawda?


Aby to uzyskać, kliknij przycisk Add layer at top, zaznaczony na czerwono. Zauważ, że nowa warstwa - Layer 2 - jest na górze listy; oznacza to, że jest wyświetlana nad warstwą z tłem, graczem i potworami. Możesz zmieniać kolejność warstw przeciągając je. Ważne jest, aby nasz tekst był na warstwie nad główną warstwą, inaczej teksturowane tło zasłaniałoby tekst.

Porada:

Gdy dodajesz nowy obiekt, zostaje on umieszczony na obecnie wybranej warstwie. Aby przenieść obiekt na inną warstwę, przeciągnij go z edytora planu na docelową warstwę na pasku warstw.

Gdy wybierzesz warstwę, wyświetlą się jej właściwości. Zmień jej nazwę na UI (skrót od User Interface) zmieniając właściwość Title. Zmień Scroll X rate i Scroll Y rate na 0. Mamy teraz warstwę, która się nie przewija i wyświetla się nad resztą gry. Doskonałe na wskaźnik zdrowia!

Wstaw obiekt Text z kategorii Game. We właściwościach ustaw pochylenie (italics), czerwony kolor (red) i rozmiar (size) na 25. Ustaw go w górnym lewym rogu planu jak niżej:


Wróć do edytora arkusza zdarzeń. Chcemy aby tekst zawsze pokazywał aktualny stan zdrowia gracza - mamy już zdarzenie Always, które wstawiliśmy w części 2. Dodaj więc do tego zdarzenia akcję Text - Set Text dla naszego obiektu Text. Wyświetlą się parametry z miejscem na wprowadzenie tekstu do wyświetlenia.

Pokazywanie numeru w tekście

Musimy stworzyć tekst w formacie:

Health: <liczba>

Porada:

Fragmenty tekstu są czasami nazywane ciągami lub łańcuchami znaków (string - łańcuch).

Jest kilka sposobów aby to osiągnąć. Operator + dodaje teksty, więc przykładowo "Hello " + "world" da nam "Hello world". Liczba jednak tekstem nie jest, ale operator str może przekształcić liczbę w tekst. "Hello" + str(45) da "Hello45". Wyrażenie Player.Value('Health') zwraca wartość prywatnej zmiennej Health, ale możesz użyć też krótszej formy: Player('Health'). Zwróć uwagę na to, że w apostrofy wpisuje się zmienne, a w cudzysłowy tekst. Więc parametrem tekstu może być:

"Health: " + str(Player('Health'))

Construct umożliwa również łączenie tekstu i liczb w prostszy sposób, z użycem operatora &. Ponieważ jest to stosowane tylko przy tekście, nie ma problemu z rozróżnieniem czy chodzi Ci o tekst czy liczbę. To co nie jest tekstem zostanie automatycznie zamienione na tekst. "Hello" & 45 da "Hello45". Wyrażenie więc będzie wyglądać tak:

"Health: " & Player('Health')

Jeszcze jedno: domyślnie liczby są wyświetlane z dokładnością do około 15. miejsca po przecinku. Trzeba zatem zaokrąglić liczbę punktów zdrowia aby była wyświetlana jako liczba całkowita:

"Health: " & round(Player('Health'))

Wprowadź to jako parametr dla tekstu i kliknij OK. Spróbuj uruchomić grę; powinieneś zobaczyć czerwony tekst informujący Cię o stanie Twojego zdrowia wyświetlany cały czas w tym samym miejscu na ekranie, ponieważ jest na nieprzewijającej się warstwie.

Eksplozje

Pora dodać do gry efekty eksplozji!

Wróć do edytora planu. Na pasku warstw wybierz Layer 1 i wstaw nowego duszka (Sprite) - dodawane obiekty trafiają na aktualnie wybraną warstwę. Jak poprzednio, w edytorze grafiki kliknij Open i znajdź explode.bmp w folderze Graphics:
Zauważ, że wybuch jest naokoło czarny. Nie wygląda to za dobrze, ale jest zaprojektowany dla efektów Additive i Screen, które znacznie poprawią jego wygląd. Zmień nazwę obiektu na Explosion.

Efekty Additive i Screen

Nasz wybuch jest narysowany na czarnym tle. Możemy użyć efektu aby ładnie zmieszać go z tłem i pozbyć się czarnej obwódki. Można to osiągnąć przy użyciu dwóch efektów: Additive, który uruchomi się na każdym komputerze, ponieważ nie wymaga Pixel Shadera lub Screen, który wymaga Pixel Shadera 2.0, ale daje obraz o lepszej jakości.

Porada:

Construct zawiera wiele efektów, z którymi warto poeksperymentować pod warunkiem, że masz odpowiednią wersję Pixel Shadera.

Aby zobaczyć jaką masz wersję Pixel Shadera, zaznacz aplikację na pasku projektu aby wyświetlić ustawienia aplikacji. Zwróć uwagę na 'Shader version' pod zakładką Pixel shaders. Jeśli przedstawiona wersja to PS 2.0 lub wyższa, możesz użyć efektu Screen. Jeśli wersja jest niższa niż 2.0, musisz zadowolić się efektem Additive. Możesz zmusić program Construct aby wybrał efekt w zależności od wersji Pixel Shadera na komputerze użytkownika, ale zostanie to wyjaśnione w innym samouczku.

Zaznacz duszka Explosion w edytorze planu. Pod kategorią Effects kliknij Add obok napisu New Effect. Wybierz Screen jeśli masz PS 2.0 lub nowszy. W przeciwnym wypadku wybierz Additive. Zauważ, że w kolumnie Shader jest podana wymagana przez efekt wersja Pixel Shadera.

Pixel Shader 1.1 został wprowadzony w 2000 r., 1.4 w 2001 r., a 2.0 w 2002 r., więc dzisiejsze komputery najprawdopodobniej będą współpracować z tą technologią. Ze starymi lub bardzo tanimi komputerami może być jednak problem; to jest cena, którą płacisz za używanie najnowszych technologii. Z drugej strony, każdy porządny komputer przeznaczony do gier obsłuży Pixel Shader 2.0.

Jak to wygląda


Efekt Additive


Ładniejszy efekt Screen

Jeśli sądzisz, że rożnica nie jest duża, Screen wygląda o wiele lepiej kiedy wiele wybuchów nakłada się na siebie. Efekt Additive ma tendencję do nadmiernego rozjaśniania nakładających się na siebie miejsc (mogą być nawet całkiem białe).

Wróć do edytora arkusza zdarzeń. Znajdź zdarzenie On Collision between Bullet and Monster. Dla obiektu System (pierwsza kolumna) dodaj akcję Create - Create object. Wybierz wybuch. Zostaw 1 pod Layer, pod X co-ordinate wpisz Bullet.X, a pod Y co-ordinate, wpisz Bullet.Y. Jak się pewnie domyśliłeś, tworzy to wybuch na współrzędnych X i Y naboju.

Innym sposobem na dodawanie takich wyrażeń - ponieważ mogą być one trudne do zapamiętania - jest podwójne kliknięcie obiektu (w tym przypadku naboju) na panelu z obiektami na dole okna. Pojawi się lista ze wszystkimi informacjami o obiekcie, które możesz uzyskać. Kliknij dwukrotnie Get X. Wstawi to za Ciebie Bullet.X.

Oto kompletne zdarzenie w widoku listy:


Nie przejmuj się, że nabój został wcześniej zniszczony. Construct zapamiętuje jego pozycję przez całe zdarzenie.

Gdy strzelisz w potwora, otrzymasz wybuch, który tam już zostaje. Sprawmy, żeby zanikał przy pomocy zachowania 'Fade'. Możesz to też osiągnąć używając zdarzeń aby zmienić przezroczystość, ale ten sposób jest o wiele szybszy: wróć do edytora planu i wybierz wybuch. Pod kategorią Behaviors kliknij Add i kliknij dwukrotnie zachowanie Fade. Ustaw Fade in time i Wait time na 0; chcemy tylko aby wybuch zanikał. I to wszystko - zachowanie Fade nawet samo niszczy wybuchy gdy całkiem zanikną!

Zakończenie

Na tym kończy się ten samouczek! W ramach eksperymentu możesz spróbować kliknąć Debug na pasku projektu. Pojawi się dodatkowe okno ze szczegółowymi informacjami o grze. Patrząc na liczbę obiektów (Total objects) pod obiektem System możesz zauważyć, że liczba obiektów zmniejsza się gdy wybuchy znikają. Oznacza to, że zachowanie Fade faktycznie niszczy wybuchy. Jest to też dobre miejsce aby upewnić się czy niewidzialne lub bardzo przezroczyste obiekty nie zaśmiecają gry. Debugger jest jednak kolejnym dużym tematem, o którym już nie będziemy mówić w tym samouczku.

Poeksperymentuj trochę z grą aby zapoznać się bliżej z programem Construct. Spróbuj zmienić szybkość nabojów albo dodać przyspieszenie. Dodaj dodatkowe potwory. Możesz też wykombinować sposób na dorzucanie kolejnych potworów w miarę gry i tak dalej!

Otwórz ghostshooter.cap w katalogu z samouczkiem aby zobaczyć jak ten projekt powinien wyglądać na końcu. Możesz też otworzyć File - New - Template i wybrać szablon Ghost Shooter. Jest to mała gra stworzona na podstawie tego samouczka z dodatkami takimi jak oświetlenie, licznik zabitych potworów, dodatkowe efekty i nie tylko. Pokombinuj z tym i powodzenia w tworzeniu gier!

nick:

Przpisz tekst z obrazka:
*
:)
:]
:]
:(
:D
:|
;P
;P
:<
:o
Love
;)
Brak komentarzy