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ę!]
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
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.
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