Vlastní efekt přechodu místností - Otáčení stránky

Ostatní jazyky GameMaker GML Vlastní efekt přechodu místností - Otáčení stránky

Ahoj všichni, kdo jste nezanevřeli na Game Maker 8.

Mám tady dnes pro vás něco, co se mi nějak nepodařilo nikde vygooglit, tak jsem si to musel napsat sám a celkem hezky se to povedlo. Vy si tu práci můžete ušetřit, protože se teď s vámi podělím o výsledek. :-)

Vzpomněl jsem si na svá mladá léta, kdy jsem pracoval pro Českou televizi, kde měli trikový stroj ADO 500 a na něm šly dělat snadno a dobře rozmanité efekty. Mezi nejoblíbenější patřil efekt otáčení stránky. Jeden obraz odlistuje jako stránka v knize a pod ním leží list s novým obrazem. Řekl jsem si, že by to byl hezký přechod mezi místnostmi v Game Makeru a začal prohrabávat vestavěné přechodové efekty - room transitions. Jenže nic. Pak jsem popadl Room Transition Expansion Pack, kde je 60 dalších efektů a tam taky nic. Progooglil jsem zkusmo weby a nikde nic. Tiše jsem zaklel a dal se do díla.

Tvorba vlastní room transition

Je sice složité ho vytvořit, ale je pak velice snadné ho používat. Když ve vaší hře použijete následující kód, přejdete z místnosti do místnosti novým vlastním efektem.

//definice
transition_define(88,'pageturn');
transition_steps=500;
transition_kind=88;

//přechod z room0 do room1
if (room==room0)
{ room_goto(room1); }

Ve složce Scripts musíte mít nakopírovaný můj skript pageturn, který ten efekt vytváří. Být tam musí, ale nemusíte na něj vůbec sahat. Samosebou nesmíte stejný název použít pro něco jiného, ale to snad ani nemusím připomínat. :-)

Jak je vytvořen skript Pageturn

Manuál je v tomto směru poněkud strohý a tak jsem měl mírné obavy, že to nebude fungovat, ale jede to celkem bezpečně. Pravidlo zní, že se s tím zachází jako se surfaces. Představíte si, že existuje jeden surface s obrazem stávající místnosti a druhý s obrazem místnosti nové. Vaším úkolem je napsat skript, který má vstupní parametry takovéto:

  • argument0 - surface končící místnosti
  • argument1 - surface nové místnosti
  • argument2 - šířka místnosti
  • argument3 - výška místnosti
  • argument4 - parametr fáze přechodu v rozsahu <0,1>

Mějte stejnou velikost u obou místností. Skript musí umět vykreslit obraz o dané velikosti, složený z jednoho a druhého surface v takovém poměru, jaký udává parametr. Nula znamená, že se zobrazí původní místnost. Jedna znamená, že se zobrazí nová místnost. A např. 0.5 znamená, že bude vidět půl nové a půl staré místnosti.

Celý skript si můžete prohlédnout v dev-lighteru nebo v přiloženém zdrojáku funkční ukázky. Pokud budete dělat svoje přechodové efekty, mějte na paměti, že to může být pomalé na starších počítačích. U transition define je třeba zvolit dostatečně vysoké číslo, protože nižší čísla okupují tradiční efekty GM:

  • 0 = no effect
  • 1 = Create from left
  • 2 = Create from right
  • 3 = Create from top
  • 4 = Create from bottom
  • 5 = Create from center
  • 6 = Shift from left
  • 7 = Shift from right
  • 8 = Shift from top
  • 9 = Shift from bottom
  • 10 = Interlaced from left
  • 11 = Interlaced from right
  • 12 = Interlaced from top
  • 13 = Interlaced from bottom
  • 14 = Push from left
  • 15 = Push from right
  • 16 = Push from top
  • 17 = Push from bottom
  • 18 = Rotate to the left
  • 19 = Rotate to the right
  • 20 = Blend the rooms
  • 21 = Fade out and in

Další přechody ze standardního rozšíření jsou v rozsahu 101 až 174.

  • tr_create_left
  • tr_create_right
  • tr_create_top
  • tr_create_bottom
  • tr_create_left_top
  • tr_create_right_top
  • tr_create_lef­t_bottom
  • tr_create_rig­ht_bottom
  • tr_create_cen­ter_hor
  • tr_create_cen­ter_vert
  • tr_create_center
  • tr_create_outsi­de_hor
  • tr_create_outsi­de_vert
  • tr_create_outside
  • tr_create_bars_hor
  • tr_create_bars_vert
  • tr_create_bars_both
  • tr_shift_left
  • tr_shift_right
  • tr_shift_top
  • tr_shift_bottom
  • tr_shift_left_top
  • tr_shift_right_top
  • tr_shift_left_bot­tom
  • tr_shift_right_bot­tom
  • tr_stretch_left
  • tr_stretch_right
  • tr_stretch_top
  • tr_stretch_bottom
  • tr_stretch_left_top
  • tr_stretch_rig­ht_top
  • tr_stretch_lef­t_bottom
  • tr_stretch_rig­ht_bottom
  • tr_stretch_cen­ter_hor
  • tr_stretch_cen­ter_vert
  • tr_stretch_center
  • tr_stretch_ou­tside_hor
  • tr_stretch_ou­tside_vert
  • tr_stretch_outside
  • tr_push_left
  • tr_push_right
  • tr_push_top
  • tr_push_bottom
  • tr_squeeze_left
  • tr_squeeze_right
  • tr_squeeze_top
  • tr_squeeze_bottom
  • tr_rotate_in_left
  • tr_rotate_in_right
  • tr_rotate_out_left
  • tr_rotate_out_right
  • tr_interlace_left
  • tr_interlace_right
  • tr_interlace_top
  • tr_interlace_bottom
  • tr_blocks
  • tr_blend
  • tr_fade_in
  • tr_fade_out
  • tr_fade_outin
  • tr_melt
  • tr_diagonal1_in
  • tr_diagonal1_out
  • tr_diagonal2_in
  • tr_diagonal2_out

Pokud vytvoříte vlastních přechodů víc, je samozřejmě možné nahradit jejich čísla názvy svých proměnných. Když použijete číslo již existující efektu, přepíše se původní gamemakerovský efekt.

Např.:

transition_define(1,'pageturn');

udělá, že se místo Create from left použije pageturn i když mezi místnostmi přejdete ikonkou.

! Transition define je třeba použít před každým přechodem znovu !

Transition steps říká, jak bude přechod rychlý a také plynulý. Nesouvisí s rychlostí hry nastavenou v room_speed. Má defaultní hodnotu 80, což je obvykle akorát. Vyšší je pomalejší a plynulejší, menší je rychlejší.

Použití v různých verzích GM

Vlastní room transitions by měly být bezproblémové v Game Makeru 8.0 i 8.1. Pokud někdo používá starší verzi, musí ověřit v manuálu, zda room transitions podporuje. Game Maker Studio to momentálně neumí v žádné verzi. Pokud ve Studiu budte tento efekt chtít, musíte patřičné surfaces skriptu dodat ručně. Pokud zvládnete vytvářet vlastní efekty, neměl by to být přílišný problém, ale je to práce navíc. Výmluva YYG pro vyškrtnutí těchto funkcí (prý z důvodu kompatibility mezi platformami) je více než trapná. Když to jde vytvořit GML kódem, není snad důvod, proč by to nešlo mít vestavěno od výroby.

Užijte si zábavu a vytvořte pěkné nové přechody. Nebo si prostě jen přidejte moje listování do svého repertoáru.

Když mě zmíníte pak v credits, nebudu se zlobit. :-)


 

Stáhnout

Staženo 195x (1.22 MB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

  Aktivity (1)

Článek pro vás napsal TomBen
Avatar
-

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


 


Miniatura
Předchozí článek
Naprogramujte arkanoid v GML
Miniatura
Všechny články v sekci
GameMaker - GML
Miniatura
Následující článek
Pole (Arrays) v GML

 

 

Komentáře

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.

Zatím nikdo nevložil komentář - buď první!