GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por 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


[Resolvido] Profundidade do Desenho

4 participantes

Ir para baixo

[Resolvido] Profundidade do Desenho Empty [Resolvido] Profundidade do Desenho

Mensagem por matheusco Ter 28 Out 2014, 20:05

Boa noite pessoa. Meu problema é o seguinte:

Tenho um objeto que desenha o sprite do meu jogador usando a função with. O problema  é que preciso desenhar a "sombra" que fica em cima dele, depois vem o comando de iluminação e depois desenho o sprite dele. Mas, preciso que esse último desenho fique em baixo do primeiro (não é uma opção inverter a ordem das funções por causa da iluminação).

Resumindo:

with (jogador)
{
  draw sombra
}

repeat (x)
{
  *função de iluminação*
}

with (jogador)
{
  draw sprite
}

Como faço pro sprite ser desenhado em baixo da sombra?


Última edição por matheusco em Sex 31 Out 2014, 11:52, editado 1 vez(es)
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por WellingtonBecker Ter 28 Out 2014, 20:10

Tente assim:

Código:
with (jogador)
{
draw sprite
depth=1 // quanto maior, mais baixo.
}
WellingtonBecker
WellingtonBecker

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 09/05/2013
Reputação : 105
Número de Mensagens : 824
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Ter 28 Out 2014, 20:25

WellingtonBecker escreveu:Tente assim:

Código:
with (jogador)
{
draw sprite
depth=1 // quanto maior, mais baixo.
}

Não deu. Aproveitei e tentei mudando a depth do próprio objeto que chama a função with, não rolou também.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por Gonçalves Ter 28 Out 2014, 20:39

Desenhar um no Draw e outro no Draw End (que acontece depois, logo vem por cima)?
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Ter 28 Out 2014, 20:46

Gonçalves escreveu:Desenhar um no Draw e outro no Draw End (que acontece depois, logo vem por cima)?

O que eu queria deu certíssimo, muito obrigado. Mas aconteceu alguns bugs. Os objetos que não se desenham ficaram transparentes, o que era luz virou gerador de trevas durante o dia (lol) e a luz não funciona durante a noite, haha. Mas já é alguma coisa, vou ver se consigo resolver isso e qualquer coisa volto pra pedir ajuda. Obrigado.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Ter 28 Out 2014, 22:42

Gonçalves escreveu:Desenhar um no Draw e outro no Draw End (que acontece depois, logo vem por cima)?

Então, fiz tudo certinho aqui e funcionou Very Happy Maaaas, tem algumas coisas que não entendi bem por quê acontecem.

Meu objeto que desenha tem depth 0, e como me disse lá na GMC, não importa a depth, o Draw End Event vem por cima, a menos que dois objetos usem Draw End.

Mas no meu caso, se eu tenho um objeto com depth menor que 0, ele escurece mais devagar (na mesma velocidade que os sprites desenhados pelo objeto) do que os objetos que tem depth maior (que estão acima da surface). Porém, a função que uso para escurecer a tela é essa:

draw_clear_alpha(day_color, day_alpha)

Sendo day_color basicamente preto e day alpha eu controlo pra aumentar ou diminuir a escuridão, e isso tá no Draw End Event. O mesmo acontece com o background. Se eu uso colocando lá nas opções da room, ele escurece mais rápido que os sprites desenhados pelo objeto; se coloco o objeto pra desenhar o background, ele passa a escurecer na mesma velocidade.

Draw Event:

surface_set_target(surface_light)

draw_background(back_01, view_wview[0]/2, view_hview[0]/2)

with (obj_shadowcaster_short)
{
draw_sprite_ext(sprite_index, image_index, (x - other.shadow_distance) - view_xview[0] + other.shadow_displacement, (y - other.shadow_distance) - view_yview[0], image_xscale, image_xscale, image_angle, c_black, other.shadow_alpha);
draw_sprite_ext(sprite_index, image_index, x - view_xview[0], y - view_yview[0], image_xscale, image_yscale, image_angle, -1, 1);
}

with (obj_player)
{
draw_sprite_ext(sprite_index, image_index, (x - other.shadow_distance) - view_xview[0] + other.shadow_displacement, (y - other.shadow_distance) - view_yview[0], image_xscale, image_xscale, image_angle, c_black, other.shadow_alpha);
draw_sprite_ext(sprite_index, image_index, x - view_xview[0], y - view_yview[0], image_xscale, image_yscale, image_angle, -1, 1);
}

with (obj_shadowcaster_tall)
{
draw_sprite_ext(sprite_index, image_index, (x - other.shadow_distance)- view_xview[0] + other.shadow_displacement, (y - other.shadow_distance) - view_yview[0], image_xscale, image_xscale, image_angle, c_black, other.shadow_alpha);
draw_sprite_ext(sprite_index, image_index, x - view_xview[0], y - view_yview[0], image_xscale, image_yscale, image_angle, other.color_tall_objects, 1);
}

surface_reset_target()

// Fool Proof

if surface_exists(surface_light)
{
draw_surface(surface_light,view_xview[0],view_yview[0])
}
else
{
surface_light = surface_create(view_wview[0],view_hview[0])
}

Draw End Event:

surface_set_target(surface_light)

draw_clear_alpha(day_color, day_alpha)

with (obj_lighter)
{
var i = center;
draw_set_alpha(bright)
repeat (circles)
{
draw_circle(x-view_xview[0], y-view_yview[0], i, false)
i += loop_factor
}
}

draw_set_alpha(1)
surface_reset_target()

// Fool Proof

if surface_exists(surface_light)
{
draw_surface(surface_light,view_xview[0],view_yview[0])
}
else
{
surface_light = surface_create(view_wview[0],view_hview[0])
}

Tem ideia do que tá acontecendo? Se ficou muito confuso eu posta um print.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por Gonçalves Ter 28 Out 2014, 22:46

Posta um print aí. XD
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Ter 28 Out 2014, 22:56

[Resolvido] Profundidade do Desenho 2zs4ear

A parte que mostra o chão mais claro (sem ser no círculo, aquilo é a luz), está sendo desenhada pelo objeto que tem todos Draw, assim como os objetos azuis e metade dos amarelos (que são os mesmo objetos, com profundidades diferentes).

O que está dentro da profundida da surface ou acima, fica do jeito que eu quero. O que está abaixo fica escuro mais rápido. Só que meu código de escurecer está no Draw End Event, então não sei o que tá acontecendo.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Qui 30 Out 2014, 20:15

Se alguém souber qual o problema, ainda não consegui resolver.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por Pai véi Sex 31 Out 2014, 00:21


Eu sugeriria que você usasse uma surface, mas como você já está fazendo isso, tente usar duas. Desenhe tudo na primeira, desenhe o sprite que fica por baixo na segunda e desenhe a primeira por cima da segunda.

Na verdade, essa é uma alternativa que cabe muito mais como um "remendo" do que como solução, pois tem um erro no seu código que vai gerar bugs estranhos. É esse:

Draw Event:

surface_set_target(surface_light)

Você não deve usar uma função de troca de surface dentro do evento Draw. Isso está detalhado no help. É possível que muitos dos bugs estejam vindo daí.

Boa sorte.
Pai véi
Pai véi

Data de inscrição : 27/02/2014
Reputação : 3
Número de Mensagens : 17
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Sex 31 Out 2014, 00:36

Pai véi escreveu:
Eu sugeriria que você usasse uma surface, mas como você já está fazendo isso, tente usar duas. Desenhe tudo na primeira, desenhe o sprite que fica por baixo na segunda e desenhe a primeira por cima da segunda.

Na verdade, essa é uma alternativa que cabe muito mais como um "remendo" do que como solução. Além disso, tem um erro no seu código que vai gerar bugs estranhos. É esse:

Draw Event:

surface_set_target(surface_light)

Você não deve usar uma função de troca de surface no evento Draw. Isso está detalhado no help. É possível que muitos dos bugs estejam vindo daí.

Boa sorte.

Os withs é porque as instâncias têm alguns valores randômicos (escala e rotação), portanto preciso do with.

Quanto ao surface set target, onde devo colocar? No Draw Begin?

EDIT: Tem certeza sobre não poder usar no Draw Event? Li o help http://docs.yoyogames.com/source/dadiospice/002_reference/surfaces/surface_set_target.html e não tem nada sobre isso.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por Pai véi Sex 31 Out 2014, 00:40


matheusco escreveu:Quanto ao surface set target, onde devo colocar? No Draw Begin?

Não. Ele não deve entrar em nenhum evento Draw. A diferença entre Draw Begin, Draw e Draw End é só a ordem.

Some care must be taken when using these functions. In particular please notice the following:

You should never change the drawing target while you are actually drawing on the screen, that is, never use it in drawing events. This will cause serious problems with the projection and viewport.
Pai véi
Pai véi

Data de inscrição : 27/02/2014
Reputação : 3
Número de Mensagens : 17
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Sex 31 Out 2014, 00:46

Pai véi escreveu:
matheusco escreveu:Quanto ao surface set target, onde devo colocar? No Draw Begin?

Não. Ele não deve entrar em nenhum evento Draw. A diferença entre Draw Begin, Draw e Draw End é só a ordem.

Some care must be taken when using these functions. In particular please notice the following:

You should never change the drawing target while you are actually drawing on the screen, that is, never use it in drawing events. This will cause serious problems with the projection and viewport.

De onde é isso? Não tem no link que mandei. Onde coloco então? Porque no final do código tenho que resetar o target.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por Pai véi Sex 31 Out 2014, 00:56


matheusco escreveu:De onde é isso? Não tem no link que mandei. Onde coloco então? Porque no final do código tenho que resetar o target.

Isso é do manual do Game Maker 8, mas essa função existe desde o Game Maker 6, portanto, está tanto no manual antigo quanto no manual novo. Você deve colocar essa função fora do evento Draw, não importando qual evento seja.

Talvez, se você transferir todo esse código do evento Draw para o evento End Step, dê certo (pelo que eu pude ver, aparentemente você só usou o código pra desenhar dentro da surface).

Mas, quando você quiser desenhar a surface, obviamente você deve fazer isso no evento Draw.

Grande abraço.
Pai véi
Pai véi

Data de inscrição : 27/02/2014
Reputação : 3
Número de Mensagens : 17
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Sex 31 Out 2014, 01:09

Pai véi escreveu:
matheusco escreveu:De onde é isso? Não tem no link que mandei. Onde coloco então? Porque no final do código tenho que resetar o target.

Isso é do manual do Game Maker 8, mas essa função existe desde o Game Maker 6, portanto, está tanto no manual antigo quanto no manual novo. Você deve colocar essa função fora do evento Draw, não importando qual evento seja.

Talvez, se você transferir todo esse código do evento Draw para o evento End Step, dê certo (pelo que eu pude ver, aparentemente você só usou o código pra desenhar dentro da surface).

Mas, quando você quiser desenhar a surface, obviamente você deve fazer isso no evento Draw.

Grande abraço.

Hum, entendi agora. Beleze, vou ver se é isso que tá causando o problema, se não, volto aqui pra perguntar. Abraço.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por matheusco Sex 31 Out 2014, 11:45

Pai véi escreveu:
matheusco escreveu:De onde é isso? Não tem no link que mandei. Onde coloco então? Porque no final do código tenho que resetar o target.

Isso é do manual do Game Maker 8, mas essa função existe desde o Game Maker 6, portanto, está tanto no manual antigo quanto no manual novo. Você deve colocar essa função fora do evento Draw, não importando qual evento seja.

Talvez, se você transferir todo esse código do evento Draw para o evento End Step, dê certo (pelo que eu pude ver, aparentemente você só usou o código pra desenhar dentro da surface).

Mas, quando você quiser desenhar a surface, obviamente você deve fazer isso no evento Draw.

Grande abraço.

Consegui resolver usando mais surfaces em diferentes objetos, pra controlar melhor onde vai ser desenhado o que. Mais simples do que ficar usando Draw End Event. Mas quanto ao evento que deve ser feito, perguntei no fórum GMC e essa especificação, de não desenhar no Draw era válida só pras versões antes do GM:S.

Obrigado pela ajuda.
matheusco
matheusco

Data de inscrição : 10/08/2014
Reputação : 51
Número de Mensagens : 395
Prêmios : [Resolvido] Profundidade do Desenho Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tutoriaisgamemaker.com.br

Ir para o topo Ir para baixo

[Resolvido] Profundidade do Desenho Empty Re: [Resolvido] Profundidade do Desenho

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos