IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Moritz
Neregistrovaný
Avatar
Moritz:8.2.2012 19:40

Dobrý den, nevíte někdo jak lze docílit toho, aby se např. po stisknutí klávesy změnila barva celé hry na šedou? Jde mi o to, aby veškeré objekty, pozadí a dlaždice ztratili svoje barvy a vše bylo šedé. Jde to nějak udělat, že se to změní vše hromadně najednou, nebo by se to muselo udělat u každého objektu, pozadí zvlášť?

 
Odpovědět
8.2.2012 19:40
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:8.2.2012 21:34

Co vykreslit přes obrazovku průhledný šedý sprite? ;)

Nahoru Odpovědět
8.2.2012 21:34
New kid back on the block with a R.I.P
Avatar
Moritz
Neregistrovaný
Avatar
Odpovídá na David Hartinger
Moritz:8.2.2012 22:04

To mě právě taky napadlo, ale takový obrázek bohužel veškeré barvy jenom ztmaví. Já ale potřebuji, aby barvy přešly pouze do odstínů bílé a černé...

 
Nahoru Odpovědět
8.2.2012 22:04
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:8.2.2012 22:14

Jinak to bohužel nejde, musel byste v kódu desaturovat obrazovku pixel po pixelu a to není časově levná operace.

Nahoru Odpovědět
8.2.2012 22:14
New kid back on the block with a R.I.P
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na
David Jančík:9.2.2012 14:18

Dobrý den,
našel sem odpověď na váš dotaz. O co jde: Použije se surface ( http://www.itnetwork.cz/index.php?… ) a překreslí se celá obrazovka včetně všech spritů. Nezkoušel jsem zátěžové testy a nevím tedy jak bude kód fungovat v náročnějších hrách.

//CREATE EVENT
draw=false;
surf=surface_create(room_width,room_height);
if (!surface_exists(surf))
        instance_destroy();
else
{
        surface_set_target(surf);
        draw_clear_alpha(c_black,0);
        surface_reset_target();
}
draw=true;

//STEP EVENT
if (draw)
{
        draw=false;
        var spr;
        surface_set_target(surf);
        draw_clear_alpha(c_black,0);
        screen_redraw();
        spr=sprite_create_from_surface(surf, 0, 0, room_width, room_height, 0, 0, 0, 0);
        sprite_set_alpha_from_sprite(spr, spr);
        draw_clear(c_white);
        draw_set_blend_mode_ext(bm_zero, bm_src_alpha);
        draw_sprite(spr, 0, 0, 0);
        draw_set_blend_mode(bm_add);
        draw_rectangle_color(0 , 0, room_width, room_height, c_black, c_black, c_black, c_black, 0);
        draw_set_blend_mode(bm_normal);
        sprite_delete(spr);
        surface_reset_target();
        draw=true;
}

//DRAW EVENT
if (draw)
        draw_surface(surf,0,0);

//ROOM END EVENT
surface_free(surf);
Nahoru Odpovědět
9.2.2012 14:18
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Moritz
Neregistrovaný
Avatar
Odpovídá na David Jančík
Moritz:9.2.2012 19:12

Se surface nemám žádné zkušenosti, ale vyzkoušel jsem tedy tento kód zkopírovat a vyzkoušet ho. Hru mi to ale celou zaseklo a nic víc se nestalo.. Nemám zrovna nejvýkonnější počítač, ale i tak si myslím, že bude lepší hru nekomplikovat, když vidím, jak je to složité...

 
Nahoru Odpovědět
9.2.2012 19:12
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na
David Jančík:9.2.2012 19:36

Dobrý den,
vytvořil jsem vám ukázku.
Při kolizi míčku s páčkou se aktivuje efekt zašedění. Vyzkoušejte zda vám toto půjde a dejte vědět:
http://dl.dropbox.com/…e_effect.gmk

Nahoru Odpovědět
9.2.2012 19:36
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Moritz
Neregistrovaný
Avatar
Odpovídá na David Jančík
Moritz:9.2.2012 23:18

Funguje to tak, jak má :) Jenom je hra po přechodu na šedou trochu pomalejší.. na lepším počítači by to ale nemělo dělat problém.. díky moc ;)

 
Nahoru Odpovědět
9.2.2012 23:18
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 8 zpráv z 8.