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
» 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
» 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
Usando texturas no Game Maker
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Usando texturas no Game Maker
Dá pra fazer muita coisa legal com esse modo de desenho! Dá até pra imitar aquele efeito de luz do Diablo II (o padrão de iluminação das salas): um degradê radial de branco para preto, de meio para a aresta em modo "blending screen". Para não dizer só inteligente é simplesmente perfeito e leve ao mesmo tempo!
Logo vou testar os efeitos de blending que são os mesmos do Photoshop! Se conseguir fazer água e fogo como eu faço lá vou postá-los aqui para vocês. Texturas são leves e bonitas!
Bom, então vamos lá!
Antes de desenhar uma forma primitiva com essa textura, você deve definir alguns parâmetros, como:
texture_set_interpolation(tipo)
Interpolação funciona assim: quando redesenhamos uma imagem na tela de proporções diferentes da imagem original há perda ou ganho de pixels, ok?
É como se esticássemos uma imagem qualquer: se aumentamos há ganho de pixels, se reduzimos há perda.
A interpolação vem pra amenizar a distorção dessa imagem (da perda ou do ganho) para deixá-la o mais parecida possível antes da distorção. O que ela faz é "copiar" os pixels próximos de onde ocorreram essas diferenças e pôr nesses lugares para preenchê-los.
O efeito é perfeito e só se nota diferenças quando a distorção é "brusca".
Resumindo: interpolar uma textura consome mais memória.
texture_set_blending(mesclagem)
Blending quer dizer "mistura". Isso é um dos efeitos mais legais! Cada tipo de blend é um efeito diferente.
O que o blending faz é misturar os padrões de cores da textura aos demais desenhos que ficarão por trás da mesma, somando, subtraindo, multiplicando ou dividindo o valor dessas cores. Existem vários modos de mesclagem e recomendo experimentar todos para conseguir muitos efeitos diferentes.
Aqui só se define usar o efeito blending ou não (true ou false). Para definir esse efeito você vai ter que chamar a rotina draw_set_blend_mode(modo de mesclagem).
Atenção: só use o blending quando precisar dele pois por padrão ele está definido como true!!!
texture_set_repeat(repetir)
Aqui se define com true ou false se uma textura deve repetir-se para preencher uma forma ou não. O padrão é false.
Observação: isso é importante dependendo do que for desenhar. Suponhamos que o desenho seja um muro de tijolos (o clássico muro de tijolos de novo), bastaria que repetíssemos uma pequena textura de um tijolo ou dois para obter o efeito.
Definindo pontos de orientação da textura
Aqui é só um pouco mais complicado, então atenção aqui:
1 - A textura deve ter um tamanho que seja múltiplo de 2, por exemplo: 64x64 ou 128x128 (um bom tamanho para texturas). A largura e altura de uma textura podem ser obtidas através das funções texture_get_width(texid) e texture_get_height(texid). Esses valores são retornados entre 0 e 1 e não o tamanho em pixels!
2 - A textura deve ter um identificador que o Game Maker reconhece como um "id de textura". Você consegue esse id quando define uma sprite ou background para ser usado como textura. As funções são: sprite_get_texture(spr,subimg) e background_get_texture(back).
3 - Se optar pelos efeitos de blending, recomendo que use a função texture_preload(texid). Essa função carrega a textura na memória de vídeo (que é mais rápida). Use somente se a caixa "Preload Texture" na janela de propriedades da sprite não estiver marcada.
4 - Como eu disse no item 1, o valor de largura e altura da textura passarão a ser 0 e 1. Porque isso? É simples: ao invés de fazer várias texturas para um personagem, você pode fazer apenas uma contendo todas elas. Assim você deve especificar onde a textura será colocada na forma primitiva e que parte dela.
Basta se lembrar dos MOD'S de skins de muitos games por aí. Já abriu uma skin do GTA? É tudo assim: uma textura contendo várias outras texturas!
Agora sim é o desenho!
Bom, como eu disse antes, o modo de desenho é o mesmo que havíamos falado no tópico acima. Galera, salvem esta "multi-textura" e usem o código abaixo. Esse jogo de texturas juntas é para que todos entendam melhor como funciona a posição da textura
no rotina de desenho. 0 (zero) equivale á 0 na textura e 1 equivale ao tamanho total, ok?
A rotina de desenho é:
draw_primitive_begin_texture(kind,texid) = para começar o desenho. Confira e lista de kinds (tipos de formas) que eu fiz no tópico acima. Para obter o id da textura, leia o item 1.
draw_vertex_texture(x,y,xtex,ytex) = para adicionar vértices (cantos) ao desenho.
draw_primitive_end() = para finalizar o desenho.
1 - Carreguem essa textura para uma sprite nova e coloquem o nome de gmbr_textura.
2 - Criem um objeto qualquer em uma nova sala e em seu evento "Create" coloquem:
Agora no seu evento "Draw" ponham o código respectivo para cada textura:
Para desenhar a clássica parede de tijolos:
Usando a textura de ladrilhos:
Agora a textura de pedra:
A textura de barro (que parece argila e tem sabor de pedra-sabão - lembram-se de Chaves?)
Galera, lembrem-se que dúvidas também são importantes! Poste-as aqui no fórum!!! Às veses as respostas demoram por falta de conhecimento, mas não se esqueçam de que o objetivo principal do fórum é esse: compartilhar idéias, não cobrá-las! Ok?
"Uma dúvida só é maligna quando ao invés de incentivar a busca por conhecimento, incentiva o desagrado!"
Ha! Uma boa notícia: Fiquei sabendo que jogos como Mario Kart, foram feitos usando-se texturas e rotinas de desenho bem parecidas com estas. O Reddragon tinha razão: os menos atentos podem não perceber um efeito drawner que imita um 3d!
Boa sorte e até mais!!!
Logo vou testar os efeitos de blending que são os mesmos do Photoshop! Se conseguir fazer água e fogo como eu faço lá vou postá-los aqui para vocês. Texturas são leves e bonitas!
Bom, então vamos lá!
Antes de desenhar uma forma primitiva com essa textura, você deve definir alguns parâmetros, como:
texture_set_interpolation(tipo)
Interpolação funciona assim: quando redesenhamos uma imagem na tela de proporções diferentes da imagem original há perda ou ganho de pixels, ok?
É como se esticássemos uma imagem qualquer: se aumentamos há ganho de pixels, se reduzimos há perda.
A interpolação vem pra amenizar a distorção dessa imagem (da perda ou do ganho) para deixá-la o mais parecida possível antes da distorção. O que ela faz é "copiar" os pixels próximos de onde ocorreram essas diferenças e pôr nesses lugares para preenchê-los.
O efeito é perfeito e só se nota diferenças quando a distorção é "brusca".
Resumindo: interpolar uma textura consome mais memória.
texture_set_blending(mesclagem)
Blending quer dizer "mistura". Isso é um dos efeitos mais legais! Cada tipo de blend é um efeito diferente.
O que o blending faz é misturar os padrões de cores da textura aos demais desenhos que ficarão por trás da mesma, somando, subtraindo, multiplicando ou dividindo o valor dessas cores. Existem vários modos de mesclagem e recomendo experimentar todos para conseguir muitos efeitos diferentes.
Aqui só se define usar o efeito blending ou não (true ou false). Para definir esse efeito você vai ter que chamar a rotina draw_set_blend_mode(modo de mesclagem).
Atenção: só use o blending quando precisar dele pois por padrão ele está definido como true!!!
texture_set_repeat(repetir)
Aqui se define com true ou false se uma textura deve repetir-se para preencher uma forma ou não. O padrão é false.
Observação: isso é importante dependendo do que for desenhar. Suponhamos que o desenho seja um muro de tijolos (o clássico muro de tijolos de novo), bastaria que repetíssemos uma pequena textura de um tijolo ou dois para obter o efeito.
Definindo pontos de orientação da textura
Aqui é só um pouco mais complicado, então atenção aqui:
1 - A textura deve ter um tamanho que seja múltiplo de 2, por exemplo: 64x64 ou 128x128 (um bom tamanho para texturas). A largura e altura de uma textura podem ser obtidas através das funções texture_get_width(texid) e texture_get_height(texid). Esses valores são retornados entre 0 e 1 e não o tamanho em pixels!
2 - A textura deve ter um identificador que o Game Maker reconhece como um "id de textura". Você consegue esse id quando define uma sprite ou background para ser usado como textura. As funções são: sprite_get_texture(spr,subimg) e background_get_texture(back).
3 - Se optar pelos efeitos de blending, recomendo que use a função texture_preload(texid). Essa função carrega a textura na memória de vídeo (que é mais rápida). Use somente se a caixa "Preload Texture" na janela de propriedades da sprite não estiver marcada.
4 - Como eu disse no item 1, o valor de largura e altura da textura passarão a ser 0 e 1. Porque isso? É simples: ao invés de fazer várias texturas para um personagem, você pode fazer apenas uma contendo todas elas. Assim você deve especificar onde a textura será colocada na forma primitiva e que parte dela.
Basta se lembrar dos MOD'S de skins de muitos games por aí. Já abriu uma skin do GTA? É tudo assim: uma textura contendo várias outras texturas!
Agora sim é o desenho!
Bom, como eu disse antes, o modo de desenho é o mesmo que havíamos falado no tópico acima. Galera, salvem esta "multi-textura" e usem o código abaixo. Esse jogo de texturas juntas é para que todos entendam melhor como funciona a posição da textura
no rotina de desenho. 0 (zero) equivale á 0 na textura e 1 equivale ao tamanho total, ok?
A rotina de desenho é:
draw_primitive_begin_texture(kind,texid) = para começar o desenho. Confira e lista de kinds (tipos de formas) que eu fiz no tópico acima. Para obter o id da textura, leia o item 1.
draw_vertex_texture(x,y,xtex,ytex) = para adicionar vértices (cantos) ao desenho.
draw_primitive_end() = para finalizar o desenho.
1 - Carreguem essa textura para uma sprite nova e coloquem o nome de gmbr_textura.
2 - Criem um objeto qualquer em uma nova sala e em seu evento "Create" coloquem:
- Código:
textura:=sprite_get_texture(gmbr_textura,0);
texture_preload(textura);
Agora no seu evento "Draw" ponham o código respectivo para cada textura:
Para desenhar a clássica parede de tijolos:
- Código:
texture_set_repeat(true);
texture_set_interpolation(false);
texture_set_blending(false);
draw_primitive_begin_texture(pr_trianglestrip,textura);
draw_vertex_texture(20,mouse_y,0,0);
draw_vertex_texture(400,mouse_y,0.5,0);
draw_vertex_texture(20,400,0,0.5);
draw_vertex_texture(400,400,0.5,0.5);
draw_primitive_end();
Usando a textura de ladrilhos:
- Código:
texture_set_interpolation(false);
texture_set_blending(false);
draw_primitive_begin_texture(pr_trianglestrip,textura);
draw_vertex_texture(20,mouse_y,0.5,0);
draw_vertex_texture(400,mouse_y,1,0);
draw_vertex_texture(20,400,0.5,0.5);
draw_vertex_texture(400,400,1,0.5);
draw_primitive_end();
Agora a textura de pedra:
- Código:
texture_set_interpolation(false);
texture_set_blending(false);
draw_primitive_begin_texture(pr_trianglestrip,textura);
draw_vertex_texture(20,mouse_y,0,0.5);
draw_vertex_texture(400,mouse_y,0.5,0.5);
draw_vertex_texture(20,400,0,1);
draw_vertex_texture(400,400,0.5,1);
draw_primitive_end();
A textura de barro (que parece argila e tem sabor de pedra-sabão - lembram-se de Chaves?)
- Código:
texture_set_interpolation(false);
texture_set_blending(false);
draw_primitive_begin_texture(pr_trianglestrip,textura);
draw_vertex_texture(20,mouse_y,0.5,0.5);
draw_vertex_texture(400,mouse_y,1,0.5);
draw_vertex_texture(20,400,0.5,1);
draw_vertex_texture(400,400,1,1);
draw_primitive_end();
Galera, lembrem-se que dúvidas também são importantes! Poste-as aqui no fórum!!! Às veses as respostas demoram por falta de conhecimento, mas não se esqueçam de que o objetivo principal do fórum é esse: compartilhar idéias, não cobrá-las! Ok?
"Uma dúvida só é maligna quando ao invés de incentivar a busca por conhecimento, incentiva o desagrado!"
Ha! Uma boa notícia: Fiquei sabendo que jogos como Mario Kart, foram feitos usando-se texturas e rotinas de desenho bem parecidas com estas. O Reddragon tinha razão: os menos atentos podem não perceber um efeito drawner que imita um 3d!
Boa sorte e até mais!!!
Convidad- Convidado
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos