Game maker tutoriál - Letecká strieľačka
Spustite si game maker (pri tvorbe tejto hry som používal verzii 8.0). Ak nemáte zapnutý Advanced Mode tak ho jednoducho zapnite -> Kliknutím na File a ak u možnosti Advanced mode nie je fajka kliknite na túto možnosť.
Najprv pridáme obrázok (ďalej už sprite) raketky. Kliknite preto na priečinok Sprites pravým tlačidlom a zvoľte Create sprite. Sprite si pomenujte napríklad spr_rocket (predpona spr označuje skratku sprite je vhodné ju používať aby sa vám potom neplietol rocket ako sprite a rocket ako object). Potom kliknite na Load sprite a zo zložky Space nachádzajúce sa v zložke s game maker vyberte nejaký obrázok rakety napríklad rocket.png. Potom potvrďte tlačidlom Open a sprite potvrďte OK.
Teraz vytvoríme object. Môžete zase kliknúť pravým tlačidlom na priečinok oObjects alebo ho pridať pomocou tlačidla s obrázkom modrej guľôčky nachádzajúce sa v lište ovládacích prvkov (hore v okne programu).
Object si pomenujte najlepšie obj_rocket a nastavte mu predvolené sprite kliknutím na ikonku v paneli Sprite (vľavo hore v práve aktívnom okne) vybraním spr_rocket. Pozn. môžete si všimnúť tlačidiel ktoré sa nachádzajú v paneli sprite - New a Edit, pomocou ktorých môžete tiež vytvoriť alebo zeditovať sprite.
Teraz musíme objekt naučiť jednoduchým pohybom. Začneme pohybom vľavo a vpravo. Kliknutím na tlačidlo Add Event pridajte event -> Keyboard / Left a Keyboard / Right. Všimnite si že sa do boxu označeného nadpiskem Events pridali <Left> a <Right>. Kliknite najprv na <Left> a pridajte akciu Set the horizontal speed nachádzajúce sa v move druhá odzhora
Otvorí sa okno v ktorom nastavíme vlastnosť hôr. speed na napríklad -5.
To isté urobte u <Right> s tým že tam nastavte absolútnu hodnotu teraz zadaného čísla takže napr. 5.
Potom potvrďte objekt tlačidlom OK.
Pridajte Room vľavo hore si všimnite raketky a rovnakého prvku ako pri výberu Spritu. Môžete si neskôr vyberať sprity. Teraz máte vybranú raketku takže kliknite niekam do prostredku miestnosti a raketka sa vloží. Room potom potvrďte zase tlačidlom v tvare fafky nachádzajúce sa hore vľavo a vyskúšajte si pohyb raketky kliknutím na zelenú sipecka (alebo F5).
Je to úžasné ale chcelo by to aby sa raketka taky zastavila že?
Preto okno zatvorte a opäť otvorte objekt raketka -> pridajte ďalšie dva eventy keyrelease / left a right. Do ktorých umiestnite rovnaké akcie ako minule a nastavte tam hodnotu 0 (resp. Len stlačte OK).
Vyskúšajte si hru znova. Už je to lepšie však?
V editore roomu si tiež vyskúšajte klávesové skratky ak kliknete na už existujúci objekt s držaním ctrl -> potom ho môžete premiestňovať. Alt vám zruší nepríjemné snapovanie ku čtverečkům -> plynulý pohyb. Shift potom objekt klonom.
Nastavte si v záložke settings výšku roomu na potrebné 1500. Vo views
zaškrtnite Evable the use of Views a Visible when room
starts. Keby sme použili view na objekt rakety tak by sa room začal
posúvať až by raketka došla doprostred. Preto musíme urobiť dlaší
objekt. Vytvorte si objekt obj_camera, odškrtnite jej visible (bude
neviditeľný) a do eventu Create jej dajte akcii Set the vertical speed
na -2. To isté urobte u obj_rocket. Potom vložte do roomu asi centimeter nad
dolný koniec raketku a do polovice výrezu kameru. Vo views nastavte Object
following na obj_camera a v˘bor na 320 (pripíšte nulu). Či ste správne
umiestnili obj_camera a či funguje posun po mape tak ako chceme zistíte až po
tom čo pridáte pozadí. Takže ešte chvíľku vydržte.
Vytvorte nové pozadie a načítajte nejaké z priečinka game maker. Potom v záložke pozadia v roomu nastavte rovnakým spôsobom ako sprite pri objekte defaultný pozadia -> vpravo na mape sa potom ukáže. Teraz spustite hru a kochajte sa.
Aby raketka nemohla opustiť room a letieť niekam do halela ... proste dopryč. Musíme pozmeniť pár vlastností. Vytvorte si nový sprite pomenovaný treba border. Kliknite na Edit sprite potom vytvorte nový sprite (biela obálka vedľa zelenej sipecka). Nastavte veľkosť na 660 šírka a 500výška urobte jednoduchý rámček. Uložte a v nastavení Spritu stlačte tlačidlo centier -> krížik sa vycentruje do stredu obrázka. (Keď budete premiestňovať objekt s týmto Sprit tak si môžete všimnúť že je vycentrovaný a keď ho vložíte alebo premiestňujete tak začína prostriedkom, teraz si to vyskúšate a pochopíte) A všetko potvrďte. Tento rámik nastavte ako defaultný sprite objektu obj_camera, ktoré zaškrtnite ešte políčko solid a potom sa prepnite do správy roomu. Kde kamerou pohybujte pomocou ctrl + shift + myš tak aby sa jej tri rohy (ľavý pravý a dolný) mierne vynárali z okrajov roomu. Potom ešte nastavte u hbor: 0 au vbor: 250. To je veľkosť zóny od každej strany (horizontálne alebo vertikálne) od ktorej sa začne pohybovať room.Teraz ešte promakáme raketu aby zrýchľovala a spomaľovala.
Pridajte preto známej eventy <UP>, <DOWN>, a ich release.
Do up dáte zase set the vertical speed a hodnotu trebárs -7. Do release up -2 resp. predvolenú hodnotu.
Do down dáte 5 a do release down zase predvolenú hodnotu -2.
Ešte pridajte kolízii s obj_camera (event collision) a do neho dajte akciu
štart movin in a direcotry
(Prvá ikonka v move). Kde kliknite na šípku hore a ako hodnotu napíšte 2.
(Vspeed má totiž hodnoty v kladiem ako pohyb nadol a hodnoty v zápore ako
pohyb hore a aby sme vypli raz akciu pohyb do strán použijeme túto a takto
Teraz do raketky ešte pridajte event Outside View (nachádzajúce sa v Other). Do ktorého dajte akcii Go to next room (main1 v dolnej časti) a vyberte si nejaký pekný efekt.
Potom si vytvorte nejaký ďalší room. A môžete si tam dať ako pozadie nápis Vyhrali ste Najlepšie ako tile.
Tile je obrázok ktorý nemá inakšie účel než zobraziť sa. Ak chcete iba obrázok používajte tiles zaťažujú menej pc než objekty pretože nemajú vlastnosti. Takže si vytvorte pozadie v editore napíšte nejaký ozdobný nápis vyhrali ste a potom v editore roomu (toho nového) kliknite na záložku tiles a vložte text s výhrou.
Hru si vyskúšajte
Teraz môžete room nejako vyzdobiť (ten v ktorom lieta raketka), pridať nejaké tiles a nejaké objekty (do ktorých raketa nesmie naraziť).
Tu máte nejaké tiles:
Použite ich tak že je načítate ako pozadie a zaškrtnete use as tile set rozmery zmeňte na 32x32. V roomu si potom otvorte záložku tiles kliknete na požadovaný obrázok (hore si nastavte snapovanie tiež na 32x32 aby sa vám lepšie umiestňoval). A potom už jednoducho klikáte. Pozn .: ak vás štve že klikáte a nejaké objekty alebo tile alebo čokoľvek iné mizne tak túto neblahost zrušíte odškrtnutím políčka Delete lower.Odporúčam prečítať si tento článok o optimalizácii hry v GM
Teraz vytvoríme objekt rozbité raketky do ktorého dáme nejaký sprite výbuchu. A vložíme event animation end (z other) a do neho akciu reštart room (z main1 dole)
Do kolízie s prekážkou vložte akciu play sound z main1 kde si dáme
nejaký zvuk (ja zvolil z priečinka game maker prvé čo ma prišiel pod ruku
alarm) potom destroy the inštancie (kôš z main1) kde kliknete na Other aby sa
zničila prekážka a pod to change inštancie
z main1 kde nastavte change into na rozbitú raketku.
Teraz si pôjdeme vytvoriť animáciu aby nám fungoval event animation end. Je to jednoduché buď si nájdete nejaký gif s animáciou explózie a potom ho dáte ako sprite čim máte problém vyriešený alebo si vo sprite dáte viac obrazov za sebou a automaticky sa z nich stane animácie.
Odporúčam prečítať si tento článok ako správe urobiť animáciu
Teraz si vyrobíme guľomet resp. patrónovi ktorá bude vylítávat z špičky rakety aby sme mohli prekážky rozstrieľať.
Vytvoríme preto objekt bullet ku ktorému si treba opäť prepožičiame sprite z priečinka game maker (vycentrujte ho pomocou tlačidla centier).
V objekte rocket si vytvoríme event keyboard space do ktorého dáme akciu create inštancie (z main1) kde napíšeme ako súradnice súradnice rakety (ale ešte predtým by sme si mohli nastaviť nulové súradnice rakety na špičku rakety) zvolíme preto editáciu Spritu a sipecka nasmerujeme na vrchol rakety. Potom stačí ako súradnice napísať obj_rocket.xa obj_rocket.y.
Ak si hru vyskúšate zistíte, že je to fakt krásne, ale trochu k ničomu : D
Takže najprv by to chcelo nejaký interval aby sa náboje nevytvárali stále dokola ale mali nejakú oneskorenie.
Do create pridáme set variable (štvorček s VAR v dolnej časti) a napíšeme názov premennej ammo a hodnotu 1
Vytvoríme si event Alarm 0 a urobíme to isté plus ešte pridáme zvuk streľby (použil sem gun7 z game maker).
Event space takto poupravíme:
Do objektu strely pridáme event create a tam štart moving in a directory kde zvolíme šípku hore a rýchlosť tak 10.Pridáme ešte kolízia s prekážkami kde dáme 2x destroy (kôš) -> other a self. A outsite of room destroy self.
A skúsime hru.
Pokiaľ chcete mať hru efektívnejšie pridajte nejakému objektu (přkážce), že sa bude pohybovať proti vám napríklad nejaký meteorit.
Do create u raketky môžete pridať ešte set score ktoré nastavíte na 0 a
set the score caption info čo vám umožní zobrazovať v titulku okna
informácie o skóre.
Za každý zostrelený objekt potom môžete dať set the score +1 (zadáte 1 a
záškrt relative - tým pripočítate k súčasnej hodnote) - túto akciu
vložíte pred destroy inštancie v obj_bullet pri kolízii s objektom
Teraz si urobíme jednoduché nepriateľov.
Najprv si zase vytvoríme objekt napr. Alien ktorému vyberieme patričný sprite zase mu nastavte sipecka na špičku.
Potom kliknete na objekt strela a dáte duplikovať. Zmeníte jej smer -> dole a rýchlosť znížte tak na 5. Z kolízie s prekážkami odrovnáte score +1 a pridáte kolízií s raketou. Do ktorej dáte prehrať zvuk alarmu, destroy self inštancie a change other inštancie to raketa rozbitá.
A strelu je tiež potrebné otočiť, tí čo vlastní GM Pre môžu požiť Transofrm sprite a flipnout ho, ostatní musia vytvoriť nový sprite a otočiť ho v editácii Spritu (transform / flip).
Znovu si otvoríme objekt alien do Create dáme set variable alien_ammo na 1 a set alarm 0 na 20. Do alarm 0 create inštancie obj_alien_bullet so súradnicami alien lode (napíšte x, y) -> aby keď si ich do mapy dáte viac aby všetky strieľali. A znovu zavoláme alarm0 s oneskorením 20;
Do obj_bullet vložte kolízii s mimozemšťanama, vložte si ich do mapy a vyskúšajte.
Ešte ho jednoducho rozhýbe. Vytvorte si jednoduchý sprite nejakú čiaru s rozmermi 5x20 (šírka x výška)
Vytvorte objekt bounce ktorému nastavte solid a vypnite visible. Dajte mu
kolízii s obj_alien a do neho akciu bounce
zaškrtnite Other au against vyberte all objects.
Vložte tento objekt na miesta kde chcete aby sa mimozemšťania odrážali.
A mimozemšťanom do create pridajte štart moving
kde kliknite na ľavú a pravú sipecka a napíšte treba 5.
vyskúša
Podobne ako tanier si môžete vytvoriť ďalšie nepriateľov.
Aby ste nemuseli stále duplikovať ukážeme si fígeľ.
Objekt obj_alien premenujte na obj_enemy a vytvorte objekt obj_alien.
V obj_enemy vypnete sprite. A v obj_alien vyberiete sprite a ako parrent zvolíte obj_enemy. A potom u každého nepriateľa budete používať parrent. Čím ušetríte veľa miesta.
Jediné čo musíte ešte urobiť je v roomu miesto otazníčků dať obj_alien.
Teraz vyskúšajte a pridajte si ďalšie nepriateľov.
Ešte si otvorte obj_rocket kliknite pravým tlačidlom na kolíziu z prekážkou zvoľte duplikovať vyberte kolízii s obj_enemy a teraz je naša hra dokonalá.
Stačí pridal pár levelov. Natlačiť je prekážkami, nepriateľmi a nejakými drobnými bonusy, za ktoré bude hráč dostávať skóre (zase využitie parrent).
A hra je dokonalá!
Prikladám zdrojové súbory, keby Vám niečo nefungovalo, alebo ste sa chceli na niečo pozrieť
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 598x (168.72 kB)
Aplikácia je vrátane zdrojových kódov v jazyku GameMaker