Avatar
Moritz
Neregistrovaný
Avatar
Moritz:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Moritz
David Čápka:

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

Nahoru Odpovědět 8.2.2012 21:34
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
Moritz
Neregistrovaný
Avatar
Odpovídá na David Čápka
Moritz:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Moritz
David Čápka:

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
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
Odpovídá na Moritz
David Jančík [sczdavos]:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Moritz
Neregistrovaný
Avatar
Odpovídá na David Jančík [sczdavos]
Moritz:

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
Odpovídá na Moritz
David Jančík [sczdavos]:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Moritz
Neregistrovaný
Avatar
Odpovídá na David Jančík [sczdavos]
Moritz:

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.