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
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» 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

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


[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