Desenhar sprite dentro da mask

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

Resolvido Desenhar sprite dentro da mask

Mensagem por Esaucm98 em Qui 11 Jul 2013, 16:30

Eai ,acho que o titulo ja explica, vim aqui perguntar se ha um jeito de desenhar o sprite apenas dentro da mask, recortar oque estiver fora , assim vc poderia fazer um sistema de 'skins' para o player no jogo e impedir que fossem colocadas imagens pelos jogadores muito fora do padrão com tamanho exagerado etc.. será que da pra fazer isso?
vlw.


Última edição por Esaucm98 em Sex 12 Jul 2013, 20:42, editado 1 vez(es)

Esaucm98

Ranking : Nota D
Número de Mensagens : 275
Data de inscrição : 13/05/2012
Notas recebidas : D
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.legioncrafters.tk

Voltar ao Topo Ir em baixo

Resolvido Re: Desenhar sprite dentro da mask

Mensagem por saim em Qui 11 Jul 2013, 17:05

Dá sim. Você vai usar surfaces e blend modes.
- Primeiro, crie a mask em branco.
- numa surface, desenhe a mask
- coloque o blend mode pra draw_set_blend_mode_ext(bm_dest_alpha, bm_zero)
- desenhe a sprite
- crie a nova sprite a partir da surface
- volte o blend mode pro normal, volte o draw pra fora da surface, elimine a surface... enfim, jogue o lixo fora.

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

Resolvido Re: Desenhar sprite dentro da mask

Mensagem por Esaucm98 em Sex 12 Jul 2013, 01:40

eai saim, eu tentei fazer mas não deu certo acho que eu devo ter feito alguma coisa errada.
Enfim eu vou tentar ver oque eu fiz de errado se der certo eu dou edit aqui. vlw.

Esaucm98

Ranking : Nota D
Número de Mensagens : 275
Data de inscrição : 13/05/2012
Notas recebidas : D
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.legioncrafters.tk

Voltar ao Topo Ir em baixo

Resolvido Re: Desenhar sprite dentro da mask

Mensagem por saim em Sex 12 Jul 2013, 14:10

Mostre o que fez, mesmo dando errado. Se eu encontrar o erro, posso corrigir.

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

Resolvido Re: Desenhar sprite dentro da mask

Mensagem por Rodrigo Santiago em Sex 12 Jul 2013, 14:30

Esaucm98 - Você entendeu o que o saim falou? Porque parece meio complicado caso você não saiba as funções usadas.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Desenhar sprite dentro da mask

Mensagem por Esaucm98 em Sex 12 Jul 2013, 16:13


Código:

surf=surface_create(32,32)
surface_set_target(surf);
draw_sprite(spr_mask,image_index,x,y);
draw_set_blend_mode_ext(bm_dest_alpha, bm_zero);
draw_sprite(spr_sprite,image_index,x,y);
draw_set_blend_mode(bm_normal);
surface_reset_target();
sprite=sprite_create_from_surface(surf,x,y,32,32,true,false,16,16);
surface_free(surf);
sprite_index=sprite
Draw
Código:

draw_sprite(sprite_index,image_index,x,y);

Foi mais ou menos isso que eu fiz
Eu entendo o basico de surfaces.

Esaucm98

Ranking : Nota D
Número de Mensagens : 275
Data de inscrição : 13/05/2012
Notas recebidas : D
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.legioncrafters.tk

Voltar ao Topo Ir em baixo

Resolvido Re: Desenhar sprite dentro da mask

Mensagem por Rodrigo Santiago em Sex 12 Jul 2013, 20:26

O código está quase pronto.
Você colocou coordenada x,y , isso não pode acontecer pois a surface é uma tela nova de tamanho 32x32, use 0,0.

Bom você pode estourar a memória do seu jogo se não deletar a sprite, e usar o memoryclean(dll) ou então...
Você podia fazer tudo no draw pra não precisar de sprite. Usando surface_draw.

Deixe no Draw
Código:

surf=surface_create(32,32);
surface_set_target(surf);
draw_sprite(spr_mask,image_index,0,0);//<Nova tela, nova coordenada
draw_set_blend_mode_ext(bm_dest_alpha, bm_zero);
draw_sprite(spr_sprite,image_index,0,0);//<Nova tela nova coordenada
draw_set_blend_mode(bm_normal);
surface_reset_target();
draw_surface(surf,x,y);
surface_free(surf);

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Desenhar sprite dentro da mask

Mensagem por Esaucm98 em Sex 12 Jul 2013, 20:41

Eu consegui ! obrigado.

Você colocou coordenada x,y , isso não pode acontecer pois a surface é uma tela nova de tamanho 32x32, use 0,0.
Eu não sabia , vlw !

Esaucm98

Ranking : Nota D
Número de Mensagens : 275
Data de inscrição : 13/05/2012
Notas recebidas : D
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.legioncrafters.tk

Voltar ao Topo Ir em baixo

Resolvido Re: Desenhar sprite dentro da mask

Mensagem por Conteúdo patrocinado Hoje à(s) 05:46


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