Tux Hunt (cz. 4) - Tworzenie gier

in polish •  6 years ago 

Po gorącym tygodniu czas zacząć naszą weekendową zabawę w tworzenie gier :) Czas zapiąć pasy!

Path pingwinka

To taka wskazówka - w moim przypadku ścieżka po której poruszał się pingwin zaczynała się na ekranie. Najlepiej by pingwin pojawiał się poza ekranem i tam kończył swoją zabawę :)

Dodajmy więcej ścieżek

W naszej grze pingwin lata po jednej ścieżce. Dodajmy ich więcej. Zróbmy ich z 10 i potem losujmy jakąś po której Pingwin będzie latał). Chociaż ja zrobię tylko 5 :) [Wy się macie nie obijać, ja mogę!]

obraz.png

Depth czyli głębokość

Zdarzyć się może, że obiekt powinien być pod drugim w wyświetlaniu, ale jest nad - jest to spowodowane tym, że mamy złe ustawione tzw. depthy

obraz.png

W zasadzie pociski powinny być pod pingwinem (w ogóle powinny być oddzielone, ale ...). Aby tego dokonać i sprawić by pingwin był na pierwszym planie wchodzimy w obiekt obj_tux

Domyślnie jest depth o wartości 0. Zmieniamy na -1 (albo inną ujemną cyfrę bądź liczbę) i problem rozwiązany!

Oczywiście obiekty o niższym poziomie głębokości są "wyżej" ekranu.

obraz.png

Dźwięk wystrzału

Naciskając lewym przyciskiem myszy symulujemy strzelanie do pingwina. Powinien zatem być jakiś wystrzał (dźwiękowy) i nawet cooldown (spowolnienie między strzałami, by za szybko nie dało się strzelać).

Bardzo fajną bazą dźwięków jest OpenGameArt. Mi się spodobał dostępny na licencji Creative Commons 3 - zbiór Mike Koeniga.
https://opengameart.org/content/shotgun-shoot-reload

  • Dodajemy dźwięk w zakładce sounds i wskazujemy do pliku. Potem w obj_controller w global left mouse button dodajemy
sound_play(snd_0);

Lub inną nazwę zasobu.

Cooldown, czyli opóźnienie między strzałami

Dodajmy opóźnienie między strzałami, nie możemy za często strzelać. Niech wynosi ono 2 sekundy.

Dodajmy w obj_controller w create zmienną global.cooldown = 0 (0 oznacza u nas, że pocisk załadowany jest).

W global left released w obj_controller dodajmy ifa, że jeśli global.cooldown jest równy 0 to odtwórz dźwięk (... to co pisaliśmy).

Dodatkowo sprawmy, że global.cooldown będzie równy 1 i aktywujmy alarm za 2 sekundy. Ogólnie kod ostatecznie wygląda tak:

if(global.cooldown=0)
{
global.ammo=global.ammo-1;
sound_play(snd_0);
global.cooldown=1;
alarm[0] = 2*room_speed;
}

Dodajmy też event alarm 0 i dajmy w nim

global.cooldown=0;

Podobnie przeróbmy ifa w obj_tux dla lewego przycisku myszy dodając "&& global.cooldown=0". Na dole cały kod

if(global.ammo>=1 && global.cooldown=0)
{
score = score + 100;
effect_create_above(ef_explosion, x, y, 1, c_red);
instance_destroy();
}

Na zakończenie

Tekst może wydawać się chaotyczny. Ogólnie jesteśmy na wykończeniu gry i zostały detale. Mam jednak nadzieję, że kto chce to wie o co chodzi :) Do zobaczenia w kolejnym wpisie

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!