Nekonečný sprite - GameMaker
Následující tutoriál vám ukáže jak udělat iluzi nekonečně
dlouhého spritu. Možnosti využití jistě vymyslíte samy. Dalo by se to
využít jako dekorativní pruhy v menu, skrolující nápisy...
Takže co všechno budeme potřebovat? Hlavní je sprite. Sprite musí být
větší, nebo stejně velký jako je room. Sice píšu větší, ale stačí
když větší ve směru pohybu; tj. pro vodorovný pohyb širší a pro svislý
pohyb vyšší. Origin spritu nastavíme libovolně. Ovšem z důvodu
pozicování v Room Editoru bude nejlepší origin vycentrovat. Dále budeme
potřebovat jeden objekt - obj_scroll. Objektu přiřadíme náš sprite.
Následující kód je určen pro vodorovný posun!
V Create nastavíme rychlost pohybu:
hspeed = 5;//rychlost je libovolná
A do Stepu vložíme následující kód:
if(hspeed > 0){ if(x>=room_width+sprite_xoffset) x -= 2*sprite_width; } else { if(x<=-sprite_width+sprite_xoffset) x += 2*sprite_width; }
Pokud víte, že hspeed bude stálá , je možné vynechat jednu větev podmínky. Nepatrně se tím sníží náročnost kódu.
Následující kód je určen pro svislý posun!
V Create nastavíme rychlost pohybu:
vspeed = 5;//rychlost je libovolná
A do Stepu vložíme následující kód:
if(vspeed > 0){ if(y>=room_height+sprite_yoffset) y -= 2*sprite_height; } else { if(y<=-sprite_height+sprite_yoffset) y += 2*sprite_height; }
Pokud víte, že vspeed bude stálá, je možné vynechat jednu větev podmínky. Nepatrně se tím sníží náročnost kódu.
To nejdůležitější přijde nakonec. Umístění instancí do roomu. V room editoru musíme umístit dvě instance objektu obj_scroll a to takovým způsobem, aby vyplnily celou šířku/výšku roomu. Toho nejlépe dosáhneme tak, že obě instance budou na krajích přesahovat mimo room.
Je absolutně nezbytné, aby obě instance přesně lícovaly; tj. nesmí mezi nimi být mezera, ani se nesmí překrývat! To by melo za následek nevzhlednou mezeru.