Sice už můžeme chodit a skákat v hezkém prostředí:-), ale to by ještě nebylo moc zajímavé. Přidáme další objekty, pomocí jedněch budeme navyšovat skore, zatímco jiné nám naopak budou usilovat o náš drahocenný život:-) Výsledek této lekce by mohl dopadnout podobně jako v ukázce z originálního tutoriálu.

Plošinovka - nepřátelé

Nepřátele (příšery) bychom mohli vytvořit stejně jako u bludiště, které bylo obsahem 5. lekce, ale v této lekci přidáme několik dalších vylepšení. Doplníme dva různé typy příšerek, obě budou měnit svůj obrázek, podle toho, jestli se pohybují doleva nebo doprava. Pro oba si připravíme příslušné sprity (na obrázku například spr_monsterl pro pohyb doleva a spr_monsterr pro pohyb doprava), vhodně pojmenované a přidáme objekty.


Objekt "příšerka" v události Create "rozběhneme" jedním směrem (podle úvodního směru vybereme také příslušný sprite), aby se měnil obrázek podle směru pohybu, využijeme hodnotu proměnné hspeed (horizontální rychlost), která je při pohybu objektu doprava větší než nula a při pohybu doleva menší než nula.

Kontrolu hodnoty proměnné hspeed vložíme do události End Step, tato událost totiž nastává po provedení výpočtů, změnách hodnot proměnných a těsně před vlastním vykreslením objektů. Jak je vidět z obrázku - pokud bude hspeed větší než nula, vymění se sprite objektu (použije se "pravý"), jinak se použije druhý sprite (ve verzi Pro je možné využít akci zrcadlení obrázků, takže by stačil jeden sprite).

V našem bludišti z 5. lekce běhaly potvory jen ode zdi ke zdi, můžeme přidat další neviditelný objekt (na obrázku je to modrý čtvereček pojmenovaný obj_marker), který bude mít stejnou funkci. Stejně jako pro zeď při kolizi s tímto objektem otočíme příšerku, na hráče ale nebude mít žádný vliv. Kromě změny směru pohybu příšerek můžeme tento neviditelný objekt použít pro provedení různých akcí na určitém místě, při střelbě, kladení bomb a podobně.

Při srážce hráče s příšerkou stejně jako v minulých lekcích můžeme restartovat hru (nebo spíš jenom místnost), ale přidáme ještě možnost, že hráč získá prémiové body, pokud na příšerku skočí a tím ji také "zlikviduje". Zda jsme na příšerku skočili zjistíme tak, že zkontrolujeme, zda je vertikální rychlost větší než nula (padáme) a zároveň je pod námi další objekt (příšerka), čili jeho y-ová souřednice je o 8 pixelů větší, přeloženo do jazyka GM:
vspeed > 0 && y < other.y+8.
Pro kontrolu složitějšího výrazu použijeme akci Test Expression ze záložky control:


Po dopadu hráče na příšerku by mohla být příšerka zničena (destroy), hezčí je další možnost použitá v ukázce, že je nejprve nahrazena jiným objektem ("plackou" :-) ) pomocí akce Change Instance (záložka main1) a tento objekt se sám po nějaké době zničí.

K "sebezničení" nového objektu (placky) je využitý Alarm, který odměřuje čas (každý objekt může mít až 12 alarmů). Alarm je v ukázce objektu přidaný při jeho vytvoření a jeho čas je nastavený na 10 kroků - po 10 krocích hry od vytvoření objektu nastane událost Alarm0. Teprve při této události "placku" definitivně zlikvidujeme.


Další nepřítel v ukázce je "pták", toho zničit nelze, po srážce s ním přichází hráč o život a místnost se restartuje. Do své hry samozřejmě můžete přidávat i další nepřátele, jedovaté rostliny, kameny a podobně, pamatujte ale na to, aby hra byla hratelná:-)

Ve většině plošinovek komplikují hru také různé jámy, do kterých může hráč při nepřesném skoku spadnout a ztratit tak život. Předpokládám, že už tušíte jak na to - vytvoříme nový objekt, který vložíme na "dno" jámy (zase raději neviditelný, abychom ho "překryli" lepší grafikou) a hráči přidáme kolizi s tímto objektem, při níž dojde ke zvoleným akcím (z obrázků asi bude vše jasné):



Bodovat může hráč také sbíráním různých předmětů, v ukázce jsou zvolené houby. Aby nebyla hra pokaždé úplně stejná, vytvořili autoři ukázky pro houby sprite s deseti různými typy hub:

Příslušnému "houbovému" objektu je potom při události Create přidaná akce Change Sprite, což už známe, ale tentokrát je pro číslo podobrázku využita funkce pro volbu náhodných čísel random. Tato funkce volí náhodné číslo od nuly do čísla o 1 menší než je číslo v závorce, takže random(10) volí náhodná čísla od 0 do 9:


Můžete ale přidávat objekty, které budou mít i jiný význam než přidání bodů - třeba zisk života, rychlejší pohyb, vyšší skok, obnova zdraví apod., fantazii se meze nekladou a v tomto případě se opravdu může "vyřádit":-)


Úkoly:

Doplňte svoji plošinovku o další objekty podle lekce. Nespěchejte, pokud chcete, aby si vaši hru někdo s chutí zahrál, musí být co nejlepší:-) a to dá dost práce...