Plápolající oheň a plovoucí obláčky

Ostatní jazyky GameMaker Efekty Plápolající oheň a plovoucí obláčky

Ukážeme si jak jednoduše vytvořit plápolající oheň a efekt plovoucích obláčků.

Začneme vytvořením efektu plamene.

  • Vytvoříme si objekt obj_fire
    • přidáme create event a hned na to vytvoříme částicový systém
    • začneme nastavovat částici efektu plamene (bude to efekt zmenšující se bakulky exploze s žluto-červenou barvou stoupající k oblakům)
      • tvar zvolíme explosion
      • velikost asi 0.1 - 0.5 se size increment -0.02
      • barvu zvolíme mixed žlutá, červená s počáteční alfa průhledností 1 a koncovou 0 (postupně vymizí)
      • pohybovat se bude rychlostí 0-8 směrem 80-100 se třením 0.05 (stoupá k oblakům v úzkém vějíři)
      • a jako poslední nastavíme život od 10-15
    • nyní vylepšíme efekt - plamen bude jemně lemován stoupajícím kouřem
      • nezapomeňte změnit typ při nastavování vlastností (ať nenastavujete znovu plamen)
      • tvar bude smoke
      • velikost 0.3-0.6 s 0 inkrementací
      • barva lehce šedá až černá, měnící se (changing) s alfa průhledností 0.2 start, 0 end
      • pohyb 0-5, vějířového směru 80-100 se třením 0.1
      • a životnost 40-50
    • pro tento objekt je to vše
  • Nyní si vytvoříme ohniště - fireplace (načrtněte si nějaká polínka nebo kamenné jednoduché ohniště, ve kterém bude hořet oheň) a umístětě křížek (origin) ve spritu na místo odkud oheň bude vycházet
    • do step eventu (budou se vytvářet jednotlivé plamínky ohně) přidáme emitter
    • tvar rectangle
    • x-ová souřadnice relativně -> x-16 až +16 a y-onová y
    • teď vytvoříme pomocí burst from emitter oheň (10 částic) s kouřem (postačí 4 částice)
  • Přidejte si nějaké pěkné pozadí a v editoru místnosti přidejte ohniště na některé hezké místo, nezapomeňte umístit i objekt plamene ! Můžete spustit a vyzkoušet
  • Teď ještě lehce vylepšíme vzhled přidáním plovucích mráčků
    • Vytvoříme objekt obj_clouds a v jeho create eventu vytvoříme částici mraku - nezzapomeňte zvolit zase nový typ částice !
    • kde tvar bude cloud
    • velikost 5-3 se size increment 0.025
    • pohybovat se bude rychlostí 2-3 ostatní nevyplňujeme
    • životnost bude mít 1000-1500 (aby stihl proplout celou místností)
    • barva bude bílá až jemně našedlá, mixed, s počáteční i koncovou alfa průhledností rovnou 1
    • teď vytvoříme emiter - nezapomeňte změnit jeho id
    • typ bude normální linka
    • souřadnice x -150 (aby se tvořili mimo místnost a plynule vpluly) a y 0-150 (zvolte dle rozpínavosti)
    • pomocí stream from emitter necháme vytvářet -50 (vytvoření za 50 kroků)

Objekt přidáme do místnosti a hru spustíme.

Přepis v kódu GML může vypadat nějak takto:

//objekt plamene
//particle system
global.psyst = part_system_create();

//efekt plápolajícího ohně
global.ppart0 = part_type_create();
part_type_shape(global.ppart0, pt_shape_explosion);
part_type_size(global.ppart0, 0.1, 0.5, -0.02, 0);
part_type_color2(global.ppart0, c_yellow, c_red);
part_type_alpha2(global.ppart0, 1, 0);
part_type_speed(global.ppart0, 0, 8, -0.05, 0);
part_type_direction(global.ppart0, 80, 100, 0, 0);
part_type_life(global.ppart0, 10, 15);

//efekt kouře
global.ppart1 = part_type_create();
part_type_shape(global.ppart1, pt_shape_smoke);
part_type_size(global.ppart1, 0.3, 0.6, 0, 0);
part_type_color2(global.ppart1, c_gray, c_black);
part_type_alpha2(global.ppart1, 0.2, 0);
part_type_speed(global.ppart1, 0, 5, -0.1, 0);
part_type_direction(global.ppart1, 80, 100, 0, 0);
part_type_life(global.ppart1, 40, 50);

//objekt ohniště - step event
emitter0 = part_emitter_create(global.psyst);
part_emitter_region(global.psyst, emitter0, x-16, x+16, y, y, ps_shape_rectangle, ps_distr_linear);
part_emitter_burst(global.psyst, emitter0, global.ppart0, 10);
part_emitter_burst(global.psyst, emitter0, global.ppart1, 4);

//objekt mraku
psyst = part_system_create();

//nastavení částice mraku
ppart2 = part_type_create();
part_type_shape(ppart2, pt_shape_cloud);
part_type_size(ppart2, 5, 3, 0.025, 0);
part_type_color2(ppart2, c_white, c_gray);
part_type_alpha1(ppart2, 1);
part_type_life(ppart2, 1000, 1500);
part_type_speed(ppart2, 2, 3, 0, 0);

emitter1 = part_emitter_create(psyst);
part_emitter_region(psyst, emitter1, -150, -150, 0, 100, ps_shape_line, ps_distr_linear);
part_emitter_stream(psyst, emitter1, ppart2, -50);

 

Stáhnout

Staženo 427x (16.33 kB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

  Aktivity (1)

Článek pro vás napsal David Jančík [sczdavos]
Avatar
Autor je vášnivý programátor v .NET C# a PHP. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 



 

 

Komentáře

Avatar
o
Neregistrovaný
Avatar
o:

Ohen hned zhasne a zas je tam jiný efekt. :(

 
Odpovědět 17.3.2012 11:21
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovědět 17.3.2012 13:09
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
o
Neregistrovaný
Avatar
Odpovídá na David Čápka
o:

Jo?!
Dělal jsem to přes kod.
A stalo se tak.A do events jsem dal create.
Už víš?
Ale jinak efek za tím (mlha) je super.

 
Odpovědět 17.3.2012 14:57
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na o
David Čápka:

Musí to být samozřejmě ve stepu, aby se částice tvořily stále. Dole je ukázka ke stažení.

Odpovědět  +1 17.3.2012 15:33
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
o
Neregistrovaný
Avatar
Odpovídá na David Čápka
o:

Aha.Děkuji za odpověd :) .

 
Odpovědět 17.3.2012 19:28
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 5 zpráv z 5.