Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Tutoriál na tvorbu bludišťových her 3 - Příšery a bomby

(Napsal Mark Overmars - (C) YoYo Games Ltd, pro itnetwork.cz přeložil sdraco)

Příšery a další nástrahy

Hra teď vypadá hezky, ale stále je naprosto triviální a proto nudná. Potřebujeme přidat nějakou akci v podobě příšer. Také přidáme nějaké bomby a pohyblivé bloky a díry. Kompletní hru naleznete v souboru move3.gmk na konci článku.

Příšery

Vytvoříme 3 různé příšery: jedna se pohybuje zleva doprava, jedna shora dolů a jedna ve 4 směrech. Přidání příšer je vlastně velmi jednoduché. Je to objekt, který se začne pohybovat a mění svůj směr vždy, když se dotkne stěny. Když se postava dotkne příšery, zemře. To znamená, že se level restartuje a hráč ztratí život. Do začátku dáme postavě 3 životy.

Nejprve vytvořme příšeru, která se hýbe zleva doprava. Použijeme k tomu jednoduchý sprite a dále vytvoříme objekt s tímto spritem. V create události se rozhodne, zda půjde doleva či doprava. Abychom trochu zkomplikovali život, nastavíme rychlost o něco vyšší. Při kolizi se prohodí horizontální směr.

Druhá příšera funguje úplně stejně, ale tentokrát začíná pohyb nahoru nebo dolů a když se dotkne zdi, převrátíme vertikální rychlost.

Třetí příšera je poměrně komplikovaná. Pohyb začíná vertikálním nebo horizontálním směrem. Když se dotkne zdi, podívá se, zda se může otočit doleva či doprava. Když oboje selže, převrátí svůj směr. Vypadá to takto:

Umělá inteligence příšery - GameMaker - Bludišťovky

Abychom obešli problém, že je příšera příliš malá, vypneme preceise collision checking a masku nastavíme na bounding box a full image.

Když postava koliduje s příšerou, musime přehrát nějaký horzný zvuk, chvíli počkat, snížit počet životů o jeden a restartovat místnost. (Pořadí je klíčové. Pokud místnost restartujeme, další akce se už neprovedou.) Kontrolní objekt v události no more lives (žádné další životy) ukáže high-score a restartuje hru.

Životy

Používali jsme mechanismus Game Makeru, abychom dali hráči 3 životy. Bylo by hezké ukázat i počet životů. Objekt kontroler to umí udělat stejným způsobem, jako se score. Ale je hezčí, když opravdu vidíte malé obrázky postavy jako životy. Je k tomu akce v záložce score. Drawing událost vypadá takto:

vykreslení počtu životů - GameMaker - Bludišťovky

Všimněte si, že jsme použili font pro zobrazení score.

Bomby

Budeme pokládat bomby a spouště. Idea je taková, že když se hráč dostane ke spoušti, všechny bomby vybuchnou a zničí vše v jejich okolí. Toho může být využito při dělání děr do zní a zabíjení příšer. Budeme potřebovat 3 nové objekty: spoušť, bombu a explozi. Pro každý potřebujeme příslušný sprite.

Bomba je extrémně jednoduchá. Prostě tam sedí a nic nedělá. Abychom zajistili, že příšery budou chodit přes ní, nastavíme jí depth na 10. Instance objektů jsou vykreslovány popořadě, podle depth. Ty s vyšší depth jsou vykresleny dříve, takže jsou za instancemi s menší depth. Nastavením depth bomby na 10 se ostatní objekty s depth 0 zobrazí před ní.

Spoušť je také docela jednoduchá. Když koliduje s postavou, změní všechny bumby v exploze. Toho docílíme pomocí akce Change an object in another object. Nahoře zvolíme, že se to má týkat všech bomb.

Odpálení bomb - GameMaker - Bludišťovky

Objekt exploze prostě zobrazí animaci. Po animaci se zničí (Musíme být opatrní, aby byla exploze správně zarovnaná na bombu). Objekt také musí zničit vše, co se ho dotýká. To vyžaduje trochu práce. Jako první určitě nechceme, aby exploze zničila sama sebe, proto ji dočasně posuneme pryč. Potom použijeme akce Destroy all instances at a position kolem staré pozice exploze. Nakonec vrátíme explozi zpět na své původní místo.

Exploze bomby - GameMaker - Bludišťovky

Všimněte si, že to moc nefunguje, když je postava vedle bomby! Proto se ujistěte, že spouště nejsou vedle bomb. Je důležité levely s bombami a spouštěmi navrhovat opatrně, aby přinášely pro hráče zajímavé výzvy.

Bloky a díry

Vytvořme něco jiného, díky čemuž budou hádanky více komplikované. Vytvoříme bloky, které bude moci hráč posouvat. Také vytvoříme díry, které hráč nemůže přejít, ale po vyplnění blokem vytvoří hráči novou cestu. Toto nám otevírá nové možnosti. Bloky mohou být posouvány v určitém směru pro vytvoření průchodů. A pomocí bloků také můžete chytat příšery.

Blok je pevný objekt (solid). Hlavní problém je, že musí kopírovat pohyb postavy, když je tlačen. Když koliduje s postavou, provedeme následující akce: otestujeme, zda je relativní pozice 8 * other.hspeed, 8 * other.vspeed prázdná. Toto je pozice, na kterou by mohl být blok posunut. Pokud je prázdná, přesuneme tam blok. To samé uděláme, pokud je na této pozici díra. Abychom zabránili příšerám procházet blokem, nastavíme mu jako parrent roh zdi. Nicméně to nám vytvoří malý problém. Protože jen zde událost kolize, která je definována mezi postavou a rohem zdi, je událost spuštěna a zastaví postavu. To není to, co bychom chtěli. Abychom toto vyřešili, dáme do objektu postavy do události kolize s blokem falešnou akci. Nyní bude při kolizi spuštěna jen tato událost, která nezastavuje postavu. (Abychom byli přesní, nová událost kolize přepíše událost kolize parent objektu) Jak již bylo řečeno, můžete tak dávat potomkům trochu jiné vlastnosti, než mají jejich parrent objekty).

Díra je pevný objekt (solid). Při kolizi s blokem zničí sebe i blok. Také ji nastavíme jako parrent roh zdi, aby se chovala jako zeď.

S bloky a dírami můžete vytvořit mnoho zajímavých místností. Je tu však malý problém. Můžete se totiž jednoduše zablokovat a místnost se stane neřešitelnou. Musíme dát hráči možnost level restartovat za cenu jednoho života. Za tímto účelem použijeme klávesu R. V kontroleru v události pro tuto klávesu jednoduše odečteme jeden život a restartujeme místnost.

Tím jsme dokončili naši třetí verzi bludiště. Nyní máme mnoho prostředků pro tvorbu zajímavých levelů.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 404x (382.29 kB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

Všechny články v sekci
GameMaker - Bludišťovky
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
1 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity