Tux Hunt (cz. 3) - Tworzenie gier

in polish •  7 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ń.

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!
Sort Order:  

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