Tux Hunt (cz. 3) - Tworzenie gier

in #polish7 years ago

Kolejny tydzień to kolejne męczenie gry ;) Byleby być troszkę do przodu, a ostatecznie coś powstanie!

Zgodnie ze starym chińskim przysłowiem - jeśli gdzieś biegniesz to w końcu gdzieś dobiegniesz.

Strasznie duży pingwin.

Nasz pingwin jest strasznie duży. Możemy go zmniejszyć na przynajmniej dwa sposoby - zmniejszając rozdzielczość grafiki o połowę co wydaje się sensowne - mniejsze obciążenie kompa, mniej plik wykonywalny zajmuje i tak dalej.

I najgorsza czyli funkcjami, których użyjemy

W zdarzeniu create dla obj_tux dajemy:

image_xscale = 0.5
image_yscale = 0.5

Grafika domyślnie jest w skali "1" na "1". Zamiana na 0.5 i 0.5 zmniejsza rozmiar grafiki o połowę. Będzie ciężej ustrzelić latającego ptaszora!

Path

O Pathsach czyli ścieżkach już mówiliśmy jakiś czas temu. Ogólnie rysujemy ścieżkę po której porusza się nasz pingwin i ... on się po niej porusza :) Oczywiście chodzi o to, by trafić w naszego nielota zanim ucieknie.

Najpierw musimy taką ścieżkę narysować (co jest w linku), u mnie ona wygląda tak:

obraz.png

Czyli mamy jakąś ścieżkę, teraz trzeba ustawić, by obiekt się po niej poruszał. W tym samym create dajemy funkcję path_start

Path_start

Path start to funkcja, która ustawia ruch obiektu po danej ścieżce. Funkcja przyjmuje cztery argumenty.

Pierwszym z nich jest nazwa ścieżki. W moim przypadku to path_0

Druga to prędkość poruszania się, moim zdaniem "10" jest odpowiednio szybko.

Trzecie to co ma się stać jeśli ścieżka się wykona. Mamy cztery wyjścia:

  • Zakończyć ścieżkę (path_action_stop)
  • Zacząć od początku. Jeśli ścieżka nie jest połączona z końcem [u nas jest] to się teleportuje na koniec (path_action_restart)
  • Kontynuuje ścieżkę (jeśli rozumiem to coś jak na górze) jeśli to możliwe (path_action_continue)
  • Wraca drogą powrotną, czyli cofa się (path_action_reverse)

W naszym przypadku zastopujemy ścieżkę - uznamy, że jeśli doszedł kurak do końca to uciekł.

Kolejnym argumentem jest to czy ścieżka jest względna czy bezwzględna. Rysujemy ścieżkę po punktach z dokładnością do piksela, ale przecież obiekt może być przesunięty o np. 10 pikseli. Pytanie czy ruch ma być dokładnie po tych punktach (true - absolutna) czy względna [czyli przesunięta o te 10 pikseli] (false - relatywna).

U nas true. Mój kod wygląda tak:

path_start(path_0, 10, path_action_stop, true);

Prosty test "wykonania się" ścieżki

Musimy uznać, że kiedyś pingwin zrobi całe kółko i się wyłączy. Dzisiaj nie zrobimy "respawnu" kolejnego, ale możemy sprawdzić czy zrobił kółko. Jak zrobi kółko to gra się wyłączy. W event step pingwina dajemy:

if (path_position = 1)
{
game_end();
}

Path_position zwraca jaką część ścieżki pokonaliśmy od 0 do 1. Oznacza to, że połowa ścieżki to 0.5.

Jeśli pingwin pokonał całą to path_position daje 1; jeśli 1 jest równy 1 to wyłącz grę.

obraz.png

Mamy zatem i tak dwie możliwości. Albo pingwinowi się uda i wyłączy grę (małpa jedna) albo ustrzelimy go. Fajny patent dla Ramsonware - jak nie uda ci się to dane są usuwane :P

Na zakończenie

Mam nadzieję, że tekst się podobał i ktoś faktycznie uczy się tworzyć gry z jego pomocą ;) Jak coś zachęcam do zadawania pytań.

Sort:  

Widzę potencjał na fajną platformówkę. Powodzenia :)

Cieszę się :D Zobaczymy jak ostatecznie będzie wyglądać gra

Interesujący post, aż zafollowuje

Dajesz. Zrób to dobrze to będziesz Carmack 2 :D

Coin Marketplace

STEEM 0.17
TRX 0.24
JST 0.034
BTC 96459.90
ETH 2752.56
SBD 0.67