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:
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ę.
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ń.
Widzę potencjał na fajną platformówkę. Powodzenia :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Cieszę się :D Zobaczymy jak ostatecznie będzie wyglądać gra
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Interesujący post, aż zafollowuje
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Dajesz. Zrób to dobrze to będziesz Carmack 2 :D
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit