Página 1 de 1

[RESOLVIDO] Mudando a cor do sprite para branco!!!??

Enviado: Sex Jun 24, 2016 5:12 am
por AdrianoPpaula
Fala galerinha linda!!! Então minha dúvida é bem simples mas que infelizmente não consegui resolver, estava pesquisando aqui no fórum uma maneira de trocar a cor de um sprite quando me deparei com a função image_blend. Descobri que dava para utilizar essa função tando colocando por exemplo  image_blend= c_red ou image_blend= make_colour_rgb(255,0,0). O problema que na hora d mudar a cor do sprite para branco não consigo. pesquisei mais um pouco e descobri que se colocar por exemplo image_blend= c_white, o sprite não fica branco e sim com sua cor original. também tentei usar de outra maneira mas sem resultados, alguém sabe como posso usar a cor branco nesse caso?

Re: Mudando a cor do sprite para branco!!!??

Enviado: Sex Jun 24, 2016 8:43 am
por Rodrigo Santiago
Como funciona :

Esse tipo de mudança na sprite é inversamente subtrativa ( what ? )
É o seguinte , imagine a cor de blending "255,0,0" (vermelho) , sendo aplicado em um pixel "150,150,30".
Para aplicar a cor, inverte-se a cor vermelha "255,0,0" vira "0,255,255" , agora esse resultado é subtraído de "150,150,30" , que se transforma em "150,0,0" ,(0 é o minimo) . Isso resulta no efeito de vermelho. Veja, que como invertemos, quanto mas escura for a cor , mas escuro fica o resultado.

Segue aqui alguns exemplos :
"0,0,0" -> preto no "150,150,30" -> "0,0,0" invertido fica "255,255,255" "150,150,30" - "255,255,255" = "0,0,0"  - fica tudo preto !!!

"255,255,255" -> branco no "150,150,30" -> "255,255,255" invertido fica "0,0,0"  "150,150,30"-"0,0,0" = "150,150,30" é por isso q c_white e o blending padrão, pos não altera


*Obs .: Espero que tenha entendido

Como Resolver

VocÊ deve usar um blend mode aditivo, infelismente isso é bem complicado, pra facilitar vamos nos aproveitar do fog ( nevoa) em 3d , ja q ele pode mudar a cor das sprites.
No Create

Código: Selecionar todos

cor = c_red; // use essa variavel como se fosse image_blend
No Draw

Código: Selecionar todos

draw_self();
draw_set_alpha(0.5);
d3d_set_fog(true, cor, 0, 1); //Use a cor aqui, obs , nao altere image blend, use uma variavel
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,0.5); //Aki 0.5 fica 50% com a cor , se for 1 fica 100%
d3d_set_fog(false, 0,0,0);
draw_set_alpha(1);

Re: [RESOLVIDO] Mudando a cor do sprite para branco!!!??

Enviado: Seg Jun 27, 2016 1:16 pm
por AdrianoPpaula
funcionou perfeitamente!!!!! E agora entendi o esquema de subtração de cores vlw mesmo lol