[DÚVIDA] Tranformando transparência de um sprite em transparência em outro para sistema de iluminação.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

90% [DÚVIDA] Tranformando transparência de um sprite em transparência em outro para sistema de iluminação.

Mensagem por Adriano Heartless em Seg 23 Jul 2012, 11:52

Olá pessoal da GMB O/

Hoje eu to aqui postando esse tópico para falarmos de uma área que eu particulamento estou explorando recentimente no Game maker que é criar um sistema de iluminação.

Dei uma estudada em varios tópicos aqui da galera e comecei a entender um pouco sobre isso. Surface, sistema de alpha nos sprites, etc
mas preciso criar um sistema de iluminação para o meu cenario e está sendo dificil viuu

Bom pra começar só falando que o é 2D o game enton não vou falar nada de iluminação 3D aqui. Vamos para dúvida kkk


A ideia é o seguinte...eu quero criar um um certo ponto da room um lugar escuro e um objeto que fique girando com uma sprite que seria a luz.

Enton eu fiz assim:

Obj_light

step:
Código:
image_angle+=1


Pronto temos um objeto q fica girando...eu coloquei os pontos de origem no centro e está perfeito.

Seu sprite é mais ou menos esse aqui só que é branco:

I




Bom agora eu preciso criar uma area escura para dar o efeito desejado. Enton eu pensei bom eu poderia usar um draw_rectangle e abaixar um pouco seu alpha, mas acontece que assim não consigo suavizar as bordas =/

Enton eu poderia criar um sprite que seje um quadrado e suavizar as bordas e estica-lo de um ponto a outro?....por enquanto vamos fazer com draw mesmo


Obj_escuridao:

Draw:
Código:
draw_set_alpha(0.8)
draw_set_color(c_black)
draw_rectangle(0,1376,2176,2856,0)


Ok temos um quadro preto em uma parte da room onde vai ficar o objeto girando!!!!





Agora vamos o que eu to tentando fazer não consigo >.<


No sprite da luz tem uma parte branca q é a luz....eu quero que o game maker identifique essa parte branca do sprite da luz e torne ela transparente na area escura. Dando assim o efeito desejado.

Como posso fazer isso?....será q é possivel?



Última edição por Adriano Heartless em Ter 31 Jul 2012, 19:14, editado 1 vez(es)

Adriano Heartless

Número de Mensagens : 95
Idade : 27
Data de inscrição : 12/02/2011
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://ganelse.blogspot.com.br/

Voltar ao Topo Ir em baixo

90% Duvida

Mensagem por God_of_war425 em Seg 23 Jul 2012, 12:01

Não seria mais facil criar uma imagem amarela,diminui o alpha dela para 0.1?ou 0.5,
ela ficaria quaze transparente e daria um bom efeito de iluminação?

God_of_war425

Número de Mensagens : 510
Idade : 18
Data de inscrição : 29/10/2011
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

90% Re: [DÚVIDA] Tranformando transparência de um sprite em transparência em outro para sistema de iluminação.

Mensagem por Adriano Heartless em Ter 31 Jul 2012, 19:12

Consegui fazer.

Não estava conseguindo escurecer somente uma parte da room então resolvi escurecer ela toda e criar varios pontos de iluminação....para isso utilizei um suface em um objeto que chamei de iluminação.

depois criei um sprite de textura de luz e deu certo.

Iluminação:
Create:
Código:
surface=surface_create(room_width,room_height)

step:
Código:
surface_set_target(surface)
surface_get_texture(sp_escuridao); 
draw_clear_alpha(c_black,0.8);

// criando luz no ponto que quer da room
draw_set_blend_mode(bm_subtract);
draw_sprite(sp_luz,0,560,780);
  draw_set_blend_mode(bm_normal);
surface_reset_target()





Bom só que pintou uma outra dúvida que está atrapalhando a finalizar o efeito que eu quero.

No caso existe um background que fica na frente da surface e ele não fica escuro =/

E também esse background acaba ficando na frente de certos objetos que não pode...os Menus por exemplos...porem ele precisa ficar na frente de alguns objetos o personagem principal por exemplo.

Para isso eu liguei a opção "Foreground image" que faz com que o cenario fique na frente de objetos. Mas acabou que ta na frente de tudo até do efeito de iluminação =/

[b]

Adriano Heartless

Número de Mensagens : 95
Idade : 27
Data de inscrição : 12/02/2011
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://ganelse.blogspot.com.br/

Voltar ao Topo Ir em baixo

90% Re: [DÚVIDA] Tranformando transparência de um sprite em transparência em outro para sistema de iluminação.

Mensagem por saim em Qua 01 Ago 2012, 09:08

Adriano Heartless escreveu:step:
Os backgrounds são desenhados no draw event. Na verdade, tudo é desenhado no draw event. Seu código não deveria funcionar, mas se está funcionando, o erro deve estar no evento. Tente passar pro draw.

Adriano Heartless escreveu:(...)eu liguei a opção "Foreground image"(...)
Hm..., não sei como resolver isso! É que o draw funciona mais ou menos assim, o game maker sai "carimbando" os desenhos completos pela room, numa ordem definida (sim, com blend modes e toda a complexidade que isso envolve, mas considere que ele simplesmente sai carimbando, por enquanto). Essa ordem é definida pelas depths de cada objeto e pela id deles, no caso da depth ser igual.
Bom, e os backgrounds? Aí que tá: eu não sei. Suponho que sejam desenhados antes de todos os objetos, A MENOS QUE seja um forground. Nesse caso, seria desenhado DEPOIS de todos os objetos (teria que ser parcialmente transparente, só pra dar uns efeitos de parallax). Isso faz com que ele fique por cima de tudo, mesmo. Aí você vem com um problema novo, você quer que a imagem fique por cima de alguns objetos e por trás de outros. Não vejo como fazer isso com backgrounds, o lance é usar um objeto mesmo. Com toda a memória que isso consome (ah, só uma instância não vai fazer um estrago tão grande assim).

Perguntinha:
Adriano Heartless escreveu:
Código:
surface_get_texture(sp_escuridao);
Manual escreveu:surface_get_texture(id) Returns the texture corresponding to the surface. This can be used to draw textured objects with the image of the surface.
Pelo que entendi do manual, o que o surface_get_texture faz é transformar a surface numa textura, pra ser usada em outros locais (como primitives, por exemplo). Você colocou como argumento o nome de uma sprite e não gravou o que foi retornado em variável nenhuma. Me parece que essa linha do seu código poderia ser eliminada sem consequências. Aí, já que está funcionando (mais ou menos), eu pergunto: o que essa função está fazendo? Porque ela está ali?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

90% Re: [DÚVIDA] Tranformando transparência de um sprite em transparência em outro para sistema de iluminação.

Mensagem por PedroX em Qua 01 Ago 2012, 16:54

@saim
Na surface dá pra desenhar no Step ou em qualquer evento.

@Topic

Uma das soluções é desenhar o background manualmente. Assim você escolhe a ordem certa. Não tem muitas opções.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

90% Re: [DÚVIDA] Tranformando transparência de um sprite em transparência em outro para sistema de iluminação.

Mensagem por Conteúdo patrocinado Hoje à(s) 10:32


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum