Text této lekce jsem převzal z originálního tutoriálu z oficiálních stránek (tutorial: Platform Games). Kromě .pdf návodu obsahuje tutoriál i soubory .gmk v jednotlivých fázích vývoje hry, takže byste podle něj mohli postupovat snadno i sami:-).
Plošinovky jsou velmi časté hry, zejména v oblasti různých kapesních zařízení. Hráč ovládá postavičku, která skáče nebo padá na plošinky, používáním žebříků nebo lan se dostává na další místa atd. Sbírají se různé objekty, vyhýbáte se nepřátelům nebo je nějakým nehumánním způsobem likvidujete:-), abyste získávali body nebo se dostali do dalšího levelu. Vytvořit dobrou plošinovku není jednoduché ani s Game Makerem, pokud má graficky vypadat slušně a být dobře hratelná - jednotlivé úrovně by měly být zajímavé a stále obtížnější...
V této lekci se zaměříme na pohyb hráče, viz ukázka první části zmiňovaného tutoriálu.

Plošinovka - pohyb hráče

V první fázi si zatím připravíme první dva sprity - jeden pro plošiny (zeď) a druhý pro hráče (postavičku), později jich samozřejmě můžete přidávat více a více:-). Jejich vzhled budeme upravovat v další lekci, proto zatím stačí třeba jen čtvereček a kruh nebo něco podobného. Objekty budou zatím také dva - zeď (solid) a hráč, ten na rozdíl od předchozích bude umět skákat.
Pohyb hráče lze řešit různými způsoby, už jen pohyb doleva a doprava jsme zkoušeli různě, teď se navíc musíme rozhodnout, jestli se bude hráč pohybovat doleva a doprava jen na plošině nebo i "ve vzduchu". Vybereme si druhou možnost (i když neodpovídá fyzikálním zákonům:-)), pokud hráč nenarazí na překážku, přesune se o danou délku doleva nebo doprava, neboli se zmenší nebo zvětší jeho x-ová souřadnice o danou velikost (nezapomeňte zatrhnout Relative, neboli vzhledem k aktuálním souřadnicím hráče). Stejně se hráč pohyboval už ve třetí lekci, tentokrát ještě před změnu souřadnice přidáme podmínku - pokud je před hráčem "volno":



Ikonku pro kontrolu "volného prostoru" najdete v akcích na záložce control (hned první ikona), ve volbách této akce jsou souřadnice, které se mají kontrolovat, pokud zatrhnete Relative, jde o souřadnice vzhledem k danému objektu (v našem případě hráči). Pohyb doprava je obdobný.


Nejpodstatnější novinkou v této lekci bude skákání. Tady zasáhne stejně jako v reálném životě gravitace:-), která by měla působit neustále, takže ji využijeme v události Step. Opět nejprve zkontrolujeme, jestli je před námi "volno", tentokrát ale ve směru dolů, takže na souřadnici y o 1 větší, než je aktuální souřadnice hráče. Pokud je "volno", nastavíme gravitaci - nastavuje se směr (ve stupních, dolů = 270) a rychlost (0.5 - viz obrázek). Jinak (Else), tedy pokud nebude "volno" (dopadli jsme na plošinu), nastavíme rychlost gravitace na 0.



Poslední akcí pro událost Step je omezení rychlosti pádu, mohlo by se totiž stát, že by hráč "propadl" plošinou. Zvětšování rychlosti znamená zvětšování vzdálenosti, o kterou se panáček v jednom kroku posune, takže by mohlo dojít k tomu, že plošinu v jednom větším posunu "mine". Rychlost objektu v každém směru je uložena v systémových proměnných, se kterými můžeme pracovat. Rychlost ve vertikálním směru je uložena v proměnné (variable) vspeed, zkontrolujeme, jestli je větší než 12, a pokud ano, potom nastavíme její velikost zpět na 12.

Pro "přesný" dopad na plošinu je v tutoriálu v kolizi se zdí (plošinou) použitá akce Move to contact - pohybuj se v daném směru, dokud nedojde ke kontaktu (střetu) s objektem. Při události kolize se totiž objekt vrací na pozici před kolizí a mohlo by se stát, že při pádu zůstane "viset" nějaký ten pixel nad plošinou, což by ke cti a slávě autora hry určitě nepřispělo:-)


V nastavení akce Move to contact se určuje směr pohybu, v tomto případě je použitý název další systémové proměnné, tentokrát proměnné direction, ve které je uložený směr pohybu objektu. Dále se určuje maximální délka tohoto pohybu (v ukázce je zvoleno 12, což je maximální rychlost pádu) a kterých objektů se týká (solid). Po dopadu je velikost vertikální rychlosti nastavena na 0.

Pro skok použijeme šipku nahoru. Skočit můžeme jen, pokud stojíme na plošině, ke kontrole je použita další akce If there is a collision at a position (na záložce control).



V nastavení této kontrolní akce volíme souřadnice, na kterých se kontroluje kolize, v našem případě zkontrolujeme, jestli je plošina pod námi, čili jestli máme kolizi s objektem o 1 pixel níže, neboli se souřadnicí y o 1 větší, než je souřadnice hráče (proto Relative). Pokud stojíme na plošině, potom nastavíme vertikální rychlost na hodnotu -10 (pro směr nahoru), čím zápornější hodnota, tím "vyšší" skok.



Úkoly:

Vytvořte základ plošinovky, zatím stačí se dvěma objekty - zdí (plošinou) a hlavně správně se pohybujícím a hopsajícím:-) hráčem.