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
[Tutorial] draw_set_tint()
4 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
[Tutorial] draw_set_tint()
draw_set_tint()
Requer GameMaker 8 Pro ou superior
Em todas as instancias de um jogo de GameMaker existe uma variável chamada 'image_blend', que define com que cor a sprite da instancia deve ser misturada antes de desenhar. Algo bem útil quando queremos fazer personagens liberando energia ou carregando um especial... mas o resultado nem sempre condiz com o que queremos.
Por exemplo... queremos desenhar uma sprite com image_blend vermelho. Obtemos:
A sprite não se tornou totalmente vermelha, algo que acredito que não somente eu gostaria que o game maker fizesse...
Apenas os tons que apresentam vermelho em sua composição RGB foram desenhados, enquanto os que não tinham foram representados por 'preto', como o cabelo do personagem.
Existe um comando chamado 3d3_set_fog(ativar,cor,distancia de inicio, distancia de fim), que define a 'neblina' de um ambiente 3D. Neblinas fazem com que os objetos distantes da projeção vão 'sumindo' no ambiente, tomando a cor da neblina. Toda forma 3d antes da distancia de inicio é desenhada normalmente, toda forma 3d depois da distancia de fim fica totalmente da cor da neblina, e aqueles entre distancia de inicio ficam parcialmente pintados.
Algumas pessoas não sabem... mas as funções 3d3 podem ser usadas fora do modo 3d. Por exemplo, posso desenhar uma esfera (d3d_draw_ellipsoid) e fazê-la girar no fundo da tela, simulando um céu 3d(se aplicarmos a depth(profundidade) adequada).
Ao se desenhar algo 2D no 3D, seu Z (eixo das cotas) vale 0. Portanto, para aplicar a neblina no 2D, consideramos o ponto de inicio como sendo 0, e vamos esticar o fim conforme quizermos pintar a sprite. Formando assim o seguite script, que chamei de draw_set_tint:
- Código:
d3d_set_fog(argument0,argument2,0,(1-power(argument1,1/3))*10);
draw_set_tint(ativ,prop,cor)
-ativ indica se será ativado ou não.(true ou false)
-prop varia de 0 a 1 e indica o quanto a sprite deve ser tingida (0 para nada, 1 para totalmente)
-cor é a cor na tintura
Quando formos desenhar algo, vamos ativar a tintura, desenhar seja lá o que for, e desativar(para evitar que o efeito colora TUDO)
- Código:
draw_set_tint(1,1,c_red);
draw_sprite(sprite0,0,x,y);
draw_set_tint(0)
EDIT> Simplifiquei ainda mais o code. Ficou praticamente só o d3d_set_fog.
Obrigado a todos pela atenção e façam bom uso.
Créditos Apreciados.
Até o/
Última edição por MatheusReis em Dom 30 Out 2011, 17:22, editado 6 vez(es)
Re: [Tutorial] draw_set_tint()
Noosa! Muito bom!
Gostei muito do tutorial, me lembrei dos jogos de nave, quando você atinge um inimigo ele pisca entre outros, muito bom MatheusReis continue assim!
E gostaria de ver esse tal de céu 3D, gostaria de aprender.
Flw!
Gostei muito do tutorial, me lembrei dos jogos de nave, quando você atinge um inimigo ele pisca entre outros, muito bom MatheusReis continue assim!
E gostaria de ver esse tal de céu 3D, gostaria de aprender.
Flw!
gabrielsch- Games Ranking :
Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 1 x 0 x 0
Re: [Tutorial] draw_set_tint()
Muito bom mesmo.
Boa ideia usar funções 3D para efeitos 2D.
O código é simples, mas faz uma coisa que seria bem mais complexa sem ele.
Até mais!
Boa ideia usar funções 3D para efeitos 2D.
O código é simples, mas faz uma coisa que seria bem mais complexa sem ele.
Até mais!
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: [Tutorial] draw_set_tint()
Realmente eu não sabia que dava pra juntar as funções 3D e 2D, já apanhei com algumas coisas que queria fazer em 2D e não obtive sucesso, já em 3D seria mais fácil.MatheusReis escreveu:
Algumas pessoas não sabem... mas as funções 3d3 podem ser usadas fora do modo 3d. Por exemplo, posso desenhar uma esfera (d3d_draw_ellipsoid) e fazê-la girar no fundo da tela, simulando um céu 3d(se aplicarmos a depth(profundidade) adequada).
Ao se desenhar algo 2D no 3D, seu Z (eixo das cotas) vale 0. Portanto, para aplicar a neblina no 2D, consideramos o ponto de inicio como sendo 0, e vamos esticar o fim conforme quizermos pintar a sprite. Formando assim o seguite script, que chamei de draw_set_tint:
Parabéns, isso deixa bem claro que sempre temos mais a aprender. :oops:
CRP-Max- Games Ranking :
Notas recebidas : C
Data de inscrição : 28/10/2008
Reputação : 29
Número de Mensagens : 822
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] draw_set_tint()
Fiz uma pequena alteração no código. Por causa do modo que a coloração via neblina é calculado e conforme a proporção de tintura vai de 0 a 1, a velocidade de mudança aumenta (não é retilíneo, proporcional). Não sei se estabilizei completamente, mas agora parece mais homogêneo.
Novo código:
EDIT: Boas notícias:
1- Se você desenhar a sprite com alpha específico, o tint vai acompanhar.
2- é possivel combinar o image_blend com o tint.
Novo código:
- Código:
d3d_set_fog(argument0,argument2,0,(1-power(argument1,1/3))*10);
EDIT: Boas notícias:
1- Se você desenhar a sprite com alpha específico, o tint vai acompanhar.
2- é possivel combinar o image_blend com o tint.
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos