Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
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 : 2800
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
- Godot
- Javascript
- 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.
Tópicos semelhantes
» Dúvida sobre blend
» Dúvida sobre "caminhar" sobre rooms
» Duvida sobre programação e sobre GM
» Duvida sobre AI
» duvida sobre som
» Dúvida sobre "caminhar" sobre rooms
» Duvida sobre programação e sobre GM
» Duvida sobre AI
» duvida sobre som
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos