Entrar
Últimos assuntos
» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentropor Rukasu777 Ontem à(s) 18:10
» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
Dúvida sobre luz e Blend (bm_subtract)
3 participantes
Página 1 de 1
Dúvida sobre luz e Blend (bm_subtract)
Olá pessoal tudo bem?
Surgiu uma dúvida que é muito interessante por sinal.
Eu fiz uma tocha com um fogo. Essa tocha cria uma "bola" de luz que nada mais é que um circulo branco (sprite).
Com outro objeto eu crio um retângulo pelo draw e diminuo seu alpha para criar a escuridão.
O que eu quero é que o circulo branco nao deixe desenhar a escuridão na sua area interna. creio que seja pelo bm_subtract do Blend mode, mas nao sei fazer isso.
Sim, ja li todos os tutoriais de lanterna mas nao fazem o que eu quero.
Espero resposta vlw! Desde já agradeço a ajuda.
Surgiu uma dúvida que é muito interessante por sinal.
Eu fiz uma tocha com um fogo. Essa tocha cria uma "bola" de luz que nada mais é que um circulo branco (sprite).
Com outro objeto eu crio um retângulo pelo draw e diminuo seu alpha para criar a escuridão.
O que eu quero é que o circulo branco nao deixe desenhar a escuridão na sua area interna. creio que seja pelo bm_subtract do Blend mode, mas nao sei fazer isso.
Sim, ja li todos os tutoriais de lanterna mas nao fazem o que eu quero.
Espero resposta vlw! Desde já agradeço a ajuda.
Re: Dúvida sobre luz e Blend (bm_subtract)
Você pode desenhar uma tocha sem luz, depois colocar um BLUR bem fraco e um Opacity ou seja Alpha.
Espero ter ajudado.
Espero ter ajudado.
Super Games- Games Ranking :
Notas recebidas : C
Data de inscrição : 10/06/2010
Reputação : 36
Número de Mensagens : 2799
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Java
- C ou C++
Re: Dúvida sobre luz e Blend (bm_subtract)
bm_subtract faz o contrário ao o que você quer.
Toda a área preta em torno do circulo é removida e dentro dele aparece o preto (como se o circulo fosse uma mascara).
Exemplo:
Usando surfaces você pode reverter a mascara para fora do circulo e fazer o que você pediu.
Exemplo:
Para adicionar muitas luzes é só usar um loop e desenhar um circulo para cada uma usando apenas uma surface.
Ah, não se esqueça de deletar a surface quando não houver luzes ou mudar de fase.
Toda a área preta em torno do circulo é removida e dentro dele aparece o preto (como se o circulo fosse uma mascara).
Exemplo:
- Código:
draw_set_blend_mode(bm_subtract);
draw_set_color(c_white);
draw_circle(mouse_x,mouse_y,150,0);
draw_set_color(c_black);
draw_rectangle(view_xview,view_yview,view_xview+view_wview,view_yview+view_hview,false);
Usando surfaces você pode reverter a mascara para fora do circulo e fazer o que você pediu.
Exemplo:
- Código:
// Create
s = surface_create(view_wview,view_hview);
// Draw
surface_set_target(s);
draw_clear_alpha(c_black, 0.85);
draw_set_blend_mode(bm_subtract);
draw_set_color(c_white);
draw_circle(mouse_x,mouse_y,150, false);
draw_set_blend_mode(bm_normal);
surface_reset_target();
draw_surface(s,view_xview,view_yview);
Para adicionar muitas luzes é só usar um loop e desenhar um circulo para cada uma usando apenas uma surface.
- Código:
http://www.mediafire.com/?tdyld0p5bx8jl3q
Ah, não se esqueça de deletar a surface quando não houver luzes ou mudar de fase.
Re: Dúvida sobre luz e Blend (bm_subtract)
Vlw, mas ainda nao é isso que eu quero..Super Games escreveu:Você pode desenhar uma tocha sem luz, depois colocar um BLUR bem fraco e um Opacity ou seja Alpha.
Espero ter ajudado.
cara perfeito, era isso mesmo. mas não entendi nada e tenho duas duvidas:Kabeção escreveu:bm_subtract faz o contrário ao o que você quer.
Toda a área preta em torno do circulo é removida e dentro dele aparece o preto (como se o circulo fosse uma mascara).
Exemplo:
- Código:
draw_set_blend_mode(bm_subtract);
draw_set_color(c_white);
draw_circle(mouse_x,mouse_y,150,0);
draw_set_color(c_black);
draw_rectangle(view_xview,view_yview,view_xview+view_wview,view_yview+view_hview,false);
Usando surfaces você pode reverter a mascara para fora do circulo e fazer o que você pediu.
Exemplo:
- Código:
// Create
s = surface_create(view_wview,view_hview);
// Draw
surface_set_target(s);
draw_clear_alpha(c_black, 0.85);
draw_set_blend_mode(bm_subtract);
draw_set_color(c_white);
draw_circle(mouse_x,mouse_y,150, false);
draw_set_blend_mode(bm_normal);
surface_reset_target();
draw_surface(s,view_xview,view_yview);
Para adicionar muitas luzes é só usar um loop e desenhar um circulo para cada uma usando apenas uma surface.
- Código:
http://www.mediafire.com/?tdyld0p5bx8jl3q
Ah, não se esqueça de deletar a surface quando não houver luzes ou mudar de fase.
1º da pra fazer isso com um sprite?
2º se nao der com sprite, da pra dar um gradiente nesse circulo? pq fica muito brusco o fim da escuridão saca?
Re: Dúvida sobre luz e Blend (bm_subtract)
Moderadores perdoem o flood, mas tive que postar novamente!
eu entendi o codigo finalmente, o pro esta somente em fazer um gradiente no circulo como nesse video:
eu entendi o codigo finalmente, o pro esta somente em fazer um gradiente no circulo como nesse video:
Re: Dúvida sobre luz e Blend (bm_subtract)
Você usa o GM8?
Para usar um gradiente usa o draw_set_blend_mode_ext(bm_src_color,bm_one) para somar o branco das sprites desenhados e depois draw_set_blend_mode_ext(bm_zero,bm_src_color) quando for desenhar a surface para transformar o branco em transparente.
Usando aquele exemplo crie uma sprLuz com gradiente em 256x256 e troque o evento draw do obj0 por isso:
Use o mouse para ver e resultado da fusão.
O efeito é bem legal.
Para usar um gradiente usa o draw_set_blend_mode_ext(bm_src_color,bm_one) para somar o branco das sprites desenhados e depois draw_set_blend_mode_ext(bm_zero,bm_src_color) quando for desenhar a surface para transformar o branco em transparente.
Usando aquele exemplo crie uma sprLuz com gradiente em 256x256 e troque o evento draw do obj0 por isso:
- Código:
surface_set_target(s);
draw_clear_alpha(c_black,1);
draw_set_blend_mode_ext(bm_src_color,bm_one);
draw_set_color(c_white);
draw_sprite(sprLuz,-1,mouse_x,mouse_y);
for (i = 0; i < instance_count; i += 1)
{
ii = instance_id[i];
if instance_exists(ii)
{
if ii.object_index = objLuz
{
draw_sprite(sprLuz,-1,ii.x,ii.y);
}
}
}
draw_set_blend_mode(bm_normal);
surface_reset_target();
draw_set_blend_mode_ext(bm_zero,bm_src_color)
draw_surface(s,view_xview,view_yview);
draw_set_blend_mode(bm_normal);
Use o mouse para ver e resultado da fusão.
O efeito é bem legal.
Re: Dúvida sobre luz e Blend (bm_subtract)
Kabeção escreveu:Você usa o GM8?
Para usar um gradiente usa o draw_set_blend_mode_ext(bm_src_color,bm_one) para somar o branco das sprites desenhados e depois draw_set_blend_mode_ext(bm_zero,bm_src_color) quando for desenhar a surface para transformar o branco em transparente.
Usando aquele exemplo crie uma sprLuz com gradiente em 256x256 e troque o evento draw do obj0 por isso:
- Código:
surface_set_target(s);
draw_clear_alpha(c_black,1);
draw_set_blend_mode_ext(bm_src_color,bm_one);
draw_set_color(c_white);
draw_sprite(sprLuz,-1,mouse_x,mouse_y);
for (i = 0; i < instance_count; i += 1)
{
ii = instance_id[i];
if instance_exists(ii)
{
if ii.object_index = objLuz
{
draw_sprite(sprLuz,-1,ii.x,ii.y);
}
}
}
draw_set_blend_mode(bm_normal);
surface_reset_target();
draw_set_blend_mode_ext(bm_zero,bm_src_color)
draw_surface(s,view_xview,view_yview);
draw_set_blend_mode(bm_normal);
Use o mouse para ver e resultado da fusão.
O efeito é bem legal.
Cara sinceramente eu te amo, vc é o cara! Consegui e ficou perfeito. Agora a luz fica da forma que eu quizer. O pro é que o preto nao tem mais alpha controlável, fica sempre escuro ao máximo..
Outro erro! quando o personagem anda e sai da tela a surface tmb anda e erra tudo!!!
Re: Dúvida sobre luz e Blend (bm_subtract)
Lol... xDAnderson3d escreveu:Kabeção escreveu:Você usa o GM8?
Para usar um gradiente usa o draw_set_blend_mode_ext(bm_src_color,bm_one) para somar o branco das sprites desenhados e depois draw_set_blend_mode_ext(bm_zero,bm_src_color) quando for desenhar a surface para transformar o branco em transparente.
Usando aquele exemplo crie uma sprLuz com gradiente em 256x256 e troque o evento draw do obj0 por isso:
- Código:
surface_set_target(s);
draw_clear_alpha(c_black,1);
draw_set_blend_mode_ext(bm_src_color,bm_one);
draw_set_color(c_white);
draw_sprite(sprLuz,-1,mouse_x,mouse_y);
for (i = 0; i < instance_count; i += 1)
{
ii = instance_id[i];
if instance_exists(ii)
{
if ii.object_index = objLuz
{
draw_sprite(sprLuz,-1,ii.x,ii.y);
}
}
}
draw_set_blend_mode(bm_normal);
surface_reset_target();
draw_set_blend_mode_ext(bm_zero,bm_src_color)
draw_surface(s,view_xview,view_yview);
draw_set_blend_mode(bm_normal);
Use o mouse para ver e resultado da fusão.
O efeito é bem legal.
Cara sinceramente eu te amo, vc é o cara! Consegui e ficou perfeito. Agora a luz fica da forma que eu quizer. O pro é que o preto nao tem mais alpha controlável, fica sempre escuro ao máximo..
Outro erro! quando o personagem anda e sai da tela a surface tmb anda e erra tudo!!!
Para colocar alpha no fundo o único jeito que eu seu é com o GM8.
Você faz um gradiente do branco para o transparente e na hora de desenhar dá só uma mudada nas configurações do blend mode no alpha do draw_clear_alpha.
Para não dar esse bug você tem que desenhar a surface na posição 0,0 e diminuir view_xview e view_yview das posições da luz.
- Código:
http://www.mediafire.com/?iwdmc7unh1iu42i
Repare que o alpha funciona de maneira invertida.
Quanto menor mais escuro e quanto maior mais transparente.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|