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

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

(Napsal Mark Overmars - (C) YoYo Games Ltd, pro devbook.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

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ů

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

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

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ženo 375x (382.29 kB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

  Aktivity (1)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (1 hlasů) :
4444 4


 



 

 

Komentáře

Avatar
Petr K.
Neregistrovaný
Avatar
Petr K.:

Dobrý den, jen jsem se chtěl zeptat, zda byste tady nemohli přidat (k tutoriálům) i vide... jelikož to takto moc nechápu... bombu do hry prostě neumím vložit(aby bouchla a nezničila, nebo co to musí vše udělat).
Je to jen takový menší dotaz. Děkuji
Petr;)

 
Odpovědět 15.1.2012 13:17
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr K.
David Čápka:

Dobrý den, stáhněte si zdrojový kód pod článkem, máte tam ukázáno, jak je bomba naprogramovaná.

Odpovědět  +1 15.1.2012 14:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
conflig
Člen
Avatar
conflig:

Děkuji... moc mi to pomohlo.:)

Odpovědět 25.2.2012 8:25
„Staňte se tou změnou, kterou chcete ve světě vidět“. M. Gandhí
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.