Lekce 11 - Eventy

GM - Základy


Vítejte u 11. lekce která nám odhalí tajemství eventů. Takže pojďme na to.




Event je událost do které se vkládájí akce a určuje nám kdy se dané akce vykonají. Pro příklad, akce které dáme do Create eventu se vykonají při vytvoření instance objektu, event Step nám tyto akce vykoná v každém kroku hry.
Pokud si otevřeme okno s objekty uvidíme uprostřed panel(seznam) eventů ve kterém uvidíme eventy na které daný objekt musí reagovat. Nyní je tento list prázdný. Event vložíte kliknutím na tlačítko Add Event. Otevře se vám další menší okno s výběrem eventů, ve kterém si vyberete který event chcete přidat. Některé eventy mají ještě pod-eventy s dalšími volbami. Například pro keyboard event (vstup z klávesnice) musíte ještě vybrat klávesu. Níže najdete kompletní seznam a popis všech eventů. Event změníte kliknutím na Change. Vpravo můžete vidět všechny akce, v podobě malých ikon. Ty jsou seskupeny do několika záložek. V dalších kapitolách si všechny tyto akce popíšeme a řekneme si co dělají. Mezi eventy a akcemi je list akcí kde můžeme vidět akce které právě zvolený event obsahuje(první je tam musíme vložit) a které se musí vykonat. Pro přidání akci do eventu je přetáhněte do seznamu akcí nebo klikněte na akci pravým tlačítkem myši. Akce se řadí pod sebe a bude u nich napsán krátký popis. Pro každou akci je třeba nastavit několik málo parametrů které si popíšeme v dalších lekcích. Takže po přidání několika eventů a akcí to bude vypadat asi takto:

Event list


Můžete měnit pořadí akcí v seznamu s použitím drag-and-drop (kliknete na akci a držíte stisknuté levé tlačítko myši táhnete myši kam chcete a pak ikonku pustíte). Pokud při přesouvání ikonky podržíte klávesu <Alt> vytvoříte kopii ikonky. Můžete také přesouvat ikonky mezi objekty. Když kliknete na ikonku pravým tlačítkem myši otevře se vám nabídka kde můžete ikonku kopírovat, vyjímat, mazat, atd. Označenou ikonku smažete také klávesou <Delete> k přesouvání můžete také použít ctrl+c, ctrl+v.. Všechny tyto akce můžete provádět i s více ikonkama najednou. Označení více ikonek provedete pomocí stisknutí ctrl nebo shift. Pokud na chvíli necháte kurzor myši nad ikonkou zobrází se vám popis ikonky. V další kapitole si řekneme více informací o ikonkách.

Pro smazání eventu se všema jeho akcema klikněte na Delete. (Eventy ve kterých nejsou žádné akce se smažou automaticky). Pokud chcete přiřadit akcím jiný event (například jste se rozhodli použít jinou klávesu), klikněte na tlačítko Change a zvolte event který chcete. Z rozevírajícího menu které se vám otevře pravým kliknutím na event, ho můžete také duplikovat, to přidá nový event se stejnýma akcema.

Pro přidání eventu, klikněte na tlačítko Add Event. Otevře se vám následující okno:

Eventy

Zde si můžete vybrat event který chcete přidat. Některé mají ještě podmenu se speciálními volbami. Zde máte popis všech eventů.
 
Create event
Akce v tomto eventu se stanou při vytvoření objektu. Běžně se používá pro začátek pohybu nebo pro nastavení určitě proměnné.


Destroy event
Tyhle akce se stanou při zničení instance objektu. Pro upřesnění se stanou těsně před zničením, takže instance objektu stále existuje zatímco event už ne. S tímto eventem se moc nesetkáte ale dá se použít například pro změnu skore nebo vytvoření nějakého jiného objektu.

Alarm events
Každá instance má 12 alarmů. Alarm můžete nastavit pomocí akce (o tom si řekneme v další lekci (Alarmy detailně). Alarm odpočítává čas když dosáhne nuly akce se vykonají. Čas se nastavuje v akcích které se většinou dávají do create eventu. Alarmy se používají velmi často. Například chcete aby příšera změnila směr chůze po 20 krocích.

 
Step events
Akce které jsou v tomto eventu se odehrávájí v každém okamžiku hry. Například pokud chceme aby jeden objekt následoval druhý vložíme patřičnou ikonku sem. Zde nevkládejte mnoho komplikovaných akcí protože by to mohlo zpomalit vaší hru. Pro upřesnění jsou zde tři typy "stepu". Běžně používáte jen step. Ale jsou zde i možnosti Begin step a End step. Begin step se vykoná na začátku každého kroku hry ještě předtím než příde na řadu běžný step. Normální step se vykoná ještě předtím než instance zaujmou svá místa a End step se vykoná na konci každého kroku ale ještě před vykreslením (drawing). To je dobré použít na změnu obrázku objektu v závislosti na směru natočení.
Pokud stepum nemůžete přijít na chuť přečtěte si toto: akce které jsou ve stepu se vykonají v každém okamžiku hry. Řekněme že to je každa milisekunda. A každý tenhle okamžik (milisekundu) rozdělíme ještě na menší části.  Začátek okamžiku --> Střed okamžiku --> Konec okamžiku. Akce se tedy vykonají v tomto pořadí Begin step --> Step --> End step  (první se vykonají akce v Begin step pak ve Step a pak v End step)

 
Collision event
Kdykoliv se dvě instance "potkají" (jejich sprity se překryjí) nastane kolize. Kolizi můžeme nastavit pro každý objekt zvlášt jinak řečeno každý objekt může při kolizi vykonat různé akce.
Je zde i rozdíl jestli instance koliduje s pevným (solid) objektem nebo nepevným. První ze všeho pokud v collision eventu nejsou žádné akce, nic se nestane. Aktuální instance prostě pokračuje v pohybu; i když druhý objekt je pevný (solid). Pokud collision event obsahuje akce (ikonky) stanou se následující akce:
Když je druhý objekt pevný(solid), instance je vrácena zpět na své předchozí místo (kde se nacházela před kolizí), než byl event vykonán. Nakonec je instance přesunuta na novou pozici. Takže event např. otočení směru pohybu, instance se stále odráži od zdi bez zastavení. Pokud tady je stále kolize, instance se drží na svém předchozím místě. Takže se přestane hýbat. kdo nepochopí tak není třeba se tím teď extra zabývat. V praxi to pochopíte lépe.
Pokud druhý objekt nebude solid, instance nebude vrácena zpátky. Event se vykoná na aktuální pozici.
Takže to lehce shrneme: Pokud není ani jeden objekt solid(pevný) objekty přes sebe projdou a po celou dobu kontaktu se nám vykonává to co jsme vložili do eventu collision. Pokud je jeden z objektů solid objekty zastaví a budou do sebe narážet do nekonečna.(objekt se vrátí na místo před kolizí a opět narazí) a to se děje znovu a znovu.
Příklad si můžete stáhnout zde.

Keyboard events
Pokud hráč stiskne klávesu, keyboard event urči co se má stát ve všech instancích ze všech objektů. Pro každou klávesu můžeme nastavit jiný event. Dálé zde máme ještě dva speciální eventy. Jeden se jmenuje <No key>. Vše co dáme do tohoto eventu se děje v každém kroku hry když není zmáčknutá žádná klávesa. A druhý z nich je <Any key> akce v tomto eventu se nám odehrají kdykoliv je stisknuta nějaká klávesa. Pokud hráč klikne na několik kláves najenout pro všechny klávesy se event vykoná. Klávesy na numerické klávesnici nám budou fungovat pouze když je <NumLock> aktivní.

Mouse events
Mouse event pro jednu instanci se spustí kdykoliv je kurzor myši nad obrázkem reprezentujícím instanci. Nebo pokud je stisknuto některé z tlačítek na myši levé pravé nebo střední pro každé tlačítko je možno zvolit jiný event. Akce které dáme do tohoto eventu budou aktivní v každém kroku hry ve kterém bude stisknuto vybrané tlačítko myši. Taky můžeme event který proběhne při puštění tlačítka myši. Jsou zde opět dva speciální eventy. Mouse eter event se stane pokud myši "najedeme" na nějaký objekt. A mouse leave event se odehraje pokud kurzor myši přesuneme z instance pryč. Tyto dva eventy se obvykle používají pro změnu obrázků nebo přehrání zvuku. Mouse wheel upe a mouse wheel down se stanou když uživatel použije kolečko myši. Nakonec je zde také několik eventů pro joystick. Můžete indikovat akce pro čtyři základní směry joysticku. Také můžete definovat akce pro 8 základních tlačítek. A to všechno můžete definovat zvlášt pro primární a sekundární joystick.

Other events
Je zde také několik eventů které mohou být použity v určitých hrách. Najdete je v tomto menu. A jsou to následující eventy:

  • Outside: Akce v tomto eventu se odehrajou když instance kompetně opustí místnost. Většinou se používá pro zničení této instance.
  • Boundary: Tento event se stane když instance protne hranice místnosti.
  • Game start: Tohle se stane když spustíte hru. Tohle se stane při vytvoření místnosti ale po eventu create. Tento event se obvykle poušívá pro spuštění hudby, inicializování nějakých proměnných nebo načtení nějakých dat. Tento event by měl být pouze v jednom kontrolním objektu.
  • Game end: Akce v tomto eventu se stanou když hra končí. Běžně se používá pro uložení určitých dat do souboru.
  • Room start: Při vytvoření místnosti ale až po create se spustí akce v tomto eventu.
  • Room end: Už z názvu jde poznat že tohle se stane při ukončení místnosti.
  • No more lives: V Game Makeru  funguje lives system. (system životů). Je zde mnoho akcí pomocí kterých můžeme měnit počet životů. Kdykoliv bude mít hráč životů méně nebo rovno 0. Když tato situace nastane je vhodné ukončit nebo restartovat hru.
  • No more health: Game Maker obsahuje i health systém. (system zdraví). Opět je zde mnoho akcí které souvisí se zdravím. Kdykoliv zdraví klesne na nulu nebo míň stanou se akce které jsou v tomto eventu. Běžně se to používá pro odečtení životů(lives) nebo restartování hry.
  • End of animations: Jak bylo uvedeno výše animace se skládá z mnoha obrázků které jsou zobrazeny jeden po druhém. Poté co se přehraje poslední obrázek začne se přehrávat zase první. Akce v tomto eventu se stanou právě v tento okamžik. Použít se to dá například pro změnu animace nebo zničení instance.
  • End of path: Pokud se instance pohybuje po předem definované cestě tak tento event se stane když dojde nakonec.
  • User defined: Existují také eventy které si může programátor definovat sám. Volají se pak přímo v kódu.

Drawing event
Instance, pokud jsou viditelné, kreslí jejich sprite v každém kroku hry na obrazovku. Ale pomoci tohoto eventu můžeme vykreslovat mnoho dalších věci. Nebo také můžeme změnit parametry spritu. GM obsahuje mnoho akci speciálně navržených pro event kreslení. Vše co do tohoto eventu dáme se zobrazí pouze pokud je daný objekt viditelný(visible). Také se musíte uvědomit že kolize jsou závislé na obrázku(spritu) který je spojen s instancí.

Key press events
Tento event je podobný eventu klávesnice, s tím rozdílem že akce v tomto eventu se vykonají pouze jednou.

Key release events
Téměř to samé jako přechozí event akorát se odehraje pouze jednou při puštění klávesy.


V některých situacích je důležité rozumět v jakém pořadí Game Maker příkazy provádí. Je to takto:

  1. Begin step events
  2. Alarm events
  3. Keyboard, Key press a Key release events
  4. Mouse events
  5. Normal step events
  6. (nyní jsou všechy instance na svých nových pozicích)
  7. Collision events
  8. End step events
  9. Drawing events


Dnes to bylo hodně dlouhé tak to pomalu vstřebejte ať si příště můžeme říct něco o akcích.

Napsal uživatel wix