Scratch gry platformowe – jak tworzyć?

gra platformowa w scratch jak rrobić

Tworzenie dowolnej gry w Scratch jest dziecinnie proste. Dziś przybliżę wam podstawowe zasady tworzenia fizyki w grach platformowych.  Poradnik będzie wiec o skakaniu, wykrywaniu platform i przeszkód, grawitacji i wszystkim co powinno znaleźć się w takiej grze! Poradnik napisałem tak, abyś dokładnie wiedział co wykonują poszczególne bloki programu.

Ostatnia aktualizacja artykułu: 02/05/2019

Platformówki to jeden z najstarszych i najpopularniejszych gatunków gier. Niemal każdy zna ich proste zasady. Wielopoziomowe platformy, pułapki, przeciwnicy, zbieranie pieniędzy lub innych bonusów i czasami walka z uciekającym czasem.

Najbardziej znanym przedstawicielami tego gatunku są niewątpliwie takie gry jak: Mario, Mega man, Sonic, Rayman, DuckTales, Crash Bandicoot czy Earthworm Jim.

Na dobrą grę składa się kilka elementów:s grafika, historia, bohaterowie no i oczywiście fizyka. W grach platformowych ten ostatni element jest jednym z najważniejszych. Zaczynamy! Link do scratcha : https://scratch.mit.edu/

Uwaga!!! Poradnik zakłada że znasz już podstawy Scratch. Oprócz warunków i pętli ,potrzebna będzie też wiedza jak tworzyć i używać elementów: „Moje bloki” oraz „Zmienne”.

1. Grawitacja w Scratch – gry platformowe

Tworzenie naszej gry zaczniemy od przygotowania grawitacji. W końcu robimy platformówkę. Ten element można zaprojektować na kilka sposobów. Pokażę ci Te które uważam za optymalne.

Etap 1.1 – prosta grawitacja

program na grawitację w scratch przykład 1

Najprostszy skrypt mógłby wyglądać tak jak na obrazku obok. Po kliknięciu w zieloną flagę duszek zaczyna spadać. (przesuwać się w dół wzdłuż osi Y).

Problem:

Niestety nie wygląda to zbyt realistycznie, ponieważ postać przesuwa się ze stałą prędkością. Gdybyśmy skoczyli w rzeczywistości grawitacja sprawiłaby ze poruszalibyśmy się coraz szybciej.

Etap 1.2  – grawitacja z przyspieszeniem

program na grawitację w scratch przykład 2

Musimy poprawić nasz skrypt i sprawić aby duszek spadając poruszał się coraz szybciej. Aby osiągnąć taki efekt musimy użyć zmiennych. W naszym przypadku nazwiemy ją „prędkość_Y”.

Po modyfikacji postać porusza się już zdecydowanie bardzie naturalnie. Widać że nasz bohater spada coraz szybciej.

Problem:

Duszek nie zatrzymuje się na krawędzi ekranu tylko ciągle spada! potrzebujemy sposobu aby przerwać wykonywanie programu gdy trafi na przeszkodę.

Etap 1.3 – wykrywanie przeszkody pod postacią

program na wykrywanie przeszkody


Naszego bohatera zatrzymamy dzięki warunkom. Na początek utwórz nowego duszka „platforma” na którym ma stanąć nasz bohater i umieść go w polu gry pod swoją postacią. Następnie zmodyfikuj skrypt wg przykładu obok.

Problem:

Duszek wpada w platformę i stopniowo z niej wychodzi. Nasz kod faktycznie sprawia że postać jest „wypychana” jeśli wpadnie w platformę, ale w takiej postaci nie wygląda to profesjonalnie. Trzeba zrobić coś, aby nie było to widoczne dla gracza.

Etap 1.4 – Moje bloki – jak utworzyć w Scratch 3.0?

moje bloki


Moje bloki w scratch mają wiele zastosowań. Służą głównie do upraszczania kodu. My skupimy się tylko na jednym z nich, który rozwiąże nasz problem.

  • wejdź w zakładkę „Moje bloki”
  • kliknij „utwórz blok”. w nowym oknie nadaj mu dowolną nazwę
  • koniecznie zaznacz opcję „wykonaj bez odświeżania ekranu”! – ta opcja ukryje przed graczem to że nasza postać wpada w platformę.

Problem:

Jak wykorzystać blok „wykrywanie platformy” w naszym projekcie?

Etap 1.5 – Moje bloki – jak wykorzystać w Scratch 3.0 ?

moje bloki w scratch 3 - zastosowanie


Zwróć uwagę jakich zmian należy dokonać w naszym skrypcie.

  • Część dotyczącą zatrzymania duszka zastąpiliśmy blokiem „wykrywanie platformy”
  • Do definicji bloku przenieśliśmy kod odpowiedzialny za wykrywanie platformy.
  • Użyliśmy innego rodzaju pętli (powtarzaj aż) aby skrypt wykonywał się tylko gdy postać dotyka przeszkody

2.Sterowanie postacią w Scratch – gry platformowe

Teraz kiedy grawitacja działa już jak należy, możemy zająć się poruszaniem postaci. Przy okazji zobaczysz jak można poradzić sobie z kilkoma problemami na które trafimy.

Etap 2.1 – Projekt poziomu testowego

poziom testowy

Zaczniemy od zaprojektowania poziomu testowego. Potrzebujemy czegoś prostego, co pozwoli nam sprawdzić czy poprawnie zaprogramowaliśmy naszą postać. Upewnij się że w twoim projekcie znajdzie się: kilka platform , pionowe ściany i jakieś pochyłości.

Etap 2.2 – Chodzenie po platformach

sterowanie postacią

Nasz program na sterowanie jest bardzo prosty.:

  • Zawsze – sprawia że po kliknięciu zielonej flagi zawsze sprawdza instrukcje w pętli
  • ustaw styl obrotu – sprawdź co się stanie bez tego bloku 🙂
  • jeżeli – warunek sprawdza czy odpowiedni klawisz został wciśnięty jeśli tak to wykonuje instrukcję.
  • kierunek „90” = prawo „- 90” = lewo
  • zmień x przesuwa naszego bohatera o odpowiednią ilość pól względem osi x

Etap 2.3 – Upraszczamy kod używając opcji „Mój blok”

sterowanie postacią w scratch

Wróć do punktu 1.4 i utwórz kolejny własny blok który będzie służył do przechowywania instrukcji jak poruszać postacią.

Tym razem wykorzystamy też opcję „dodaj dane wejściowe”. Kliknij ją 2 razy. Nadaj nazwę blokowi i polom z danymi. koniecznie zaznacz opcję „wykonaj bez odświeżania ekranu”

Zmodyfikuj skrypt na chodzenie tak jak na załączonym obrazku.

Ta modyfikacja jest nam potrzebna aby rozwiązać kolejny problem.

Etap 2.4 – Programujemy wykrywanie ścian.

Przetestuj swoją grę. Zauważysz że kiedy Twoja postać dotknie ściany to zostaje natychmiast „teleportowana” na jej szczyt. Dzieje się tak ponieważ działa nasza instrukcja z punktu 1.5 (wykrywanie platformy). Chcieliśmy aby działała w przypadku platformy pod nogami postaci, a nie pionowych przeszkód! Zmodyfikujmy więc nasz kod.

Ten problem rozwiążemy w bardzo ciekawy sposób. Sprawimy że nasza postać będzie mogła wchodzić po pochyłościach, ale tylko niektórych. Jeśli podejście będzie za strome, nasza postać nie ruszy się z miejsca.

Wykorzystaj to zachowanie naszego bohatera przy projektowaniu poziomów!

wykrywanie ścian

Poeksperymentuj z różnymi ustawieniami, zobacz jak wtedy będzie zachowywać się postać

Etap 3 – Jak zaprogramować skakanie postacią w Scratch – gry platformowe

Na tym etapie możemy się zająć napisaniem, a w zasadzie, ułożeniem kodu opowiedzianego za skakanie postacią.

Etap 3.1 – Skakanie prosty kod

skakanie postacią

Aby dodać możliwość skakania wróćmy do części naszego programu gdzie umięśniliśmy kod odpowiedzialny za chodzenie.

Dodajemy kod jak na załączonym obrazku i podczas testowania, mamy prawie to o co na nam chodziło. Postać skacze wyżej , jeśli dłużej przytrzymamy klawisz,jednak coś dziwnego dzieje się gdy go puszczamy.

Problem:

Postać nienaturalnie szybko spada po puszczaniu przycisku „W”.

Ponownie działa kod z punktu 1.5 – natychmiast kiedy nie dotykamy platformy skrypt nalicza wartość do spadania. Kiedy puszczamy przycisk „W” przesuwamy się od razu w dół o np 10 kroków, a nie o 1. Naprawmy to!

Etap 3.2 – Poprawiamy kod na Skakanie

skakanie postacią przykład 2

Poprawiony kod działa nieco lepiej. Wyeliminowaliśmy problem z dziwnym spadaniem. Pojawił się za to inny! Kiedy dłużej przytrzymamy przycisk W nasza postać zaczyna latać!

Tak w 90% wygląda praca programisty rzadko zdarza się że nasz kod zadziała 100% tak jak zaplanowaliśmy. Zazwyczaj trzeba się wielokrotnie cofać aby poprawić elementy programu.

Etap 3.3 – Skok wersja poprawiona

Aby ostatecznie poprawić nasz kod na skakanie, dodamy zmienną, która będzie sprawdzała jak długo nasza postać jest w powietrzu. I pozwoli wykonać Skok tylko wtedy, jeśli jej wartość będzie bliska 0.

Modyfikację należy wykonać w 2 miejscach. Zgodnie z załączonym obrazem

program na skakanie postacią w Scratch gry platformowe

Etap 3.4 – Wykrywanie sufitu

Nasz kod potrzebuje jeszcze jednej poprawki. Jak słusznie zauważył Wiktor w swoim komentarzu, nasza postać teleportuje się na platformę kiedy dotknie jej głową. Jak rasowi programiści kolejny raz musimy poprawić nasz skrypt.

W naszym projekcie mamy procedurę odpowiedzialną za wykrywanie platformy. Poprawialiśmy go w punkcie 3.3.

Na tą chwilę nasz kod podnosi postać do góry zawsze kiedy dotyka platformy. Niezależnie czy będzie to głowa, nogi czy inna część naszej postaci.

Chcemy natomiast żeby czynność podnoszenia nie była wykonywana jeśli postać jest w trakcie skoku. Dzięki temu kiedy w trakcie skoku dotkniemy głową platformy, nasza postać odbije się od niej.

Po pierwsze musimy edytować blok „wykrywanie platformy” i dodać wartość typu bolean. Nazwiemy ją „w_powietrzu?” i jak sama nazwa wskazuje będzie sprawdzała czy nasza postać znajduje się w trakcie skoku.

Zmienna bolean może przyjąć tylko 2 wartości prawda lub fałsz. Jak już pewnie się domyślacie wykorzystamy to aby kod „wykrywanie platformy” wykonywał różne instrukcje w zależności jaka będzie jej wartość.

Jeśli postać jest w trakcie skoku i dotknie platformy ma się od niej odbić.
Jeśli postać nie skacze ma tak jak do tej pory stać na platformie.

Wszystkie modyfikacje które musimy wykonać prezentuje ten screen:

scratch odbijanie od platformy

Podsumowanie

I to już koniec pierwszej części poradnika jak stworzyć grę platformową w scratch. Mamy gotową fizykę. Nasza postać potrafi skakać i chodzić. Spada też z platform. W kolejnej części dodamy kilka poprawek i ulepszeń.

Projekt z gotową fizyką możecie zobaczyć pod tym linkiem: https://scratch.mit.edu/projects/291295129/

Jeśli stworzyłeś na podstawie tego poradnika, jakąś fajną platformówkę, to podziel się linkiem do niej w komentarzu!

Jedna myśl o “Scratch gry platformowe – jak tworzyć?

  1. Wiktor Odpowiedz

    Podoba mi się że nie pokazujesz od razu gotowego programu, tylko jak po kolei go zbudować i jakie błędy mogą się pojawić.

    Zrobiłem wszystko tak jak napisałeś i teraz mam inny błąd ; gdy duszek dotknie głową platformy to „teleportuje” się na tą platformę. Jak to naprawić?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *