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
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50

» Servidor de Discord do fórum?
por Super Games Sáb 18 maio 2024, 01:27

» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10

» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

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

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

» 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

» 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


Mudar apenas parte da sprite

4 participantes

Ir para baixo

mudando sprite - Mudar apenas parte da sprite Empty Mudar apenas parte da sprite

Mensagem por LincolnSalles Sáb 17 Nov 2012, 19:38

Em muitos jogos percebo que é animada apenas parte da sprite. Isso economiza desenho, pois você desenha apenas partes da sprite, e não ela toda. Eu posso animar o rosto do personagem sem ter que desenhar o corpo junto. Eu tenho um exemplo abaixo do jogo Caves Story:

mudando sprite - Mudar apenas parte da sprite NpcAlmo2

Nesse outro exemplo do Mário apenas a roda é animada, não precisando desenhar o tanque todo:

mudando sprite - Mudar apenas parte da sprite Novo

É possível fazer isso em gml?
LincolnSalles
LincolnSalles

Data de inscrição : 20/09/2012
Reputação : 0
Número de Mensagens : 40
Prêmios : mudando sprite - Mudar apenas parte da sprite 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

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

Mensagem por SIGILOSO Sáb 17 Nov 2012, 19:59

Com certeza, tanto por códigos no evento Draw, quanto com diferentes instâncias reunidas para montar um único objeto.
mudando sprite - Mudar apenas parte da sprite Olhos
Os olhos desse monstro se comportam individualmente, piscando, sem a necessidade de animar toda a sprite.
mudando sprite - Mudar apenas parte da sprite Boss
E aqui, as "peças" de sprites, que quando unidas formam todo um personagem mais dinâmico, detalhado e completo.

Eu faço isso a partir de instâncias, assim o personagem pode ter características atribuídas exclusivamente a determinada parte do seu corpo e uma animação própria e mais natural Smile
afro
SIGILOSO
SIGILOSO

Games Ranking : Nota A

Notas recebidas : A+A+A+A+A+A+A
Data de inscrição : 06/06/2009
Reputação : 39
Número de Mensagens : 2267
Prêmios : mudando sprite - Mudar apenas parte da sprite Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 4 Prata x 2 Bronze x 1

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

Ir para o topo Ir para baixo

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

Mensagem por LincolnSalles Sáb 17 Nov 2012, 20:17

Sim, com instâncias eu sei fazer para o objeto parado. Mas eu quero mudar parte da animação do personagem com o mesmo em ação, em movimento. Digamos que eu tenha um personagem com o cabelo em pé, mas quando o mesmo correr quero o cabelo indo para trás. Terei uma animação só para o cabelo. Com o Draw faz isso né? Como?
LincolnSalles
LincolnSalles

Data de inscrição : 20/09/2012
Reputação : 0
Número de Mensagens : 40
Prêmios : mudando sprite - Mudar apenas parte da sprite 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

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

Mensagem por SIGILOSO Sáb 17 Nov 2012, 20:32

draw_sprite_ext()
Este código desenha uma sprite no objeto. Sempre que o objeto possuir um código
no evento DRAW, a sprite dele não é desenhada na tela. Com este código ele pode desenhar não só a sprite dele, como outras.
Nos campos x e y do código, você simplesmente digita... x e y, respectivamente. Significa que a sprite será desenhada na exata posição da instância. Se repetir o código, desenhando uma sprite diferente, bastaria colocar uma posição diferente para o eixo y, caso fosse o cabelo por exemplo. Um "y-6" já alteraria a posição.
Só que aí você teria que trabalhar com variáveis separadas para cada parte do personagem, para que os códigos no Draw sejam executados de maneiras distintas.
afro
SIGILOSO
SIGILOSO

Games Ranking : Nota A

Notas recebidas : A+A+A+A+A+A+A
Data de inscrição : 06/06/2009
Reputação : 39
Número de Mensagens : 2267
Prêmios : mudando sprite - Mudar apenas parte da sprite Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 4 Prata x 2 Bronze x 1

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

Ir para o topo Ir para baixo

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

Mensagem por LincolnSalles Dom 18 Nov 2012, 17:32

Não ficou claro, não consegui.
Bem vou tentar ser mais claro com o que eu to querendo fazer:

mudando sprite - Mudar apenas parte da sprite Caxumbacabe%25C3%25A7a
mudando sprite - Mudar apenas parte da sprite CaxumbaSprite

Fiz as sprites acima como teste pra entender esse processo, pra depois fazer a sprite do personagem que eu realmente quero. No step está assim:
if keyboard_check(vk_right) if place_free(x+4,y){x+=4 sprite_index=scaxumba image_xscale=1}
if keyboard_check(vk_left) if place_free(x-4,y) {x-=4 sprite_index=scaxumba image_xscale=-1 }
if keyboard_check_pressed(vk_up) and vspeed=0 {vspeed=-7 }
if keyboard_check(vk_nokey) {image_index=0}
Agora como eu uso o draw_sprite_ext ou outra função no evento draw pra desenhar a sprite da cabeça acima por cima da cabeça da sprite animada somente quando o personagem pular (quando if keyboard_check_pressed(vk_up) and vspeed=0)?
LincolnSalles
LincolnSalles

Data de inscrição : 20/09/2012
Reputação : 0
Número de Mensagens : 40
Prêmios : mudando sprite - Mudar apenas parte da sprite 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

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

Mensagem por Rodrigo Santiago Dom 18 Nov 2012, 19:50

Lembre-se de que as variáveis xscale e yscale afetam apenas a imagem quando não existe evento draw declarado ou você não á usa dentro de uma função de desenho como draw_sprite_ext.

Você tem que colocar duas ou mais funções de desenho no evento draw, dependendo de quantas partes você divide a imagem. Por exemplo, coloque duas sprites uma para o corpo e outra para cabeça.
Dai você coloca este código no evento draw:
draw_sprite_ext(sprite_do_corpo,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha)
draw_sprite_ext(sprite_da_cabeça,image_index,x,y,image_xscale2,image_yscale,image_angle,image_blend,image_alpha)

A image xscale2 é a variável que você cria pra ser a xscale da segunda imagem , que fará ela se invertir, você pode colocar quaisquer valores dentro dos outros campos mais estes são os pra que a imagem anime de acordo com a image_speed e tenha a cor determinada no blend e o número da sub imagem, você pode mudar levemente a coordenada da segunda sprite(ex: x+5,y+6) pra que ela se encaixe.
Obs.: Este código só serve pra sprites com mesmo número de sub imagens ou que não tem animação.Se quiser duas animações com números diferentes é só me perguntar.
Rodrigo Santiago
Rodrigo Santiago

Games Ranking : Nota B

Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Reputação : 73
Número de Mensagens : 1281
Prêmios : mudando sprite - Mudar apenas parte da sprite Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 3 Prata x 1 Bronze x 3

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

Ir para o topo Ir para baixo

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

Mensagem por LincolnSalles Dom 18 Nov 2012, 20:29

Quero saber sim com 2 animações de quadros diferentes.

Valeu pela resposta.
Eu consegui assim, mesmo com a cabeça tendo só um quadro e o corpo 12. Quando o personagem sai do chão muda a cabeça, como eu queria.
if keyboard_check(vk_right) {draw_sprite(scaxumba,-1,x,y)}
if keyboard_check(vk_left) {draw_sprite_ext(scaxumba,-1,x,y,-1,1,0,c_white,1)}
if keyboard_check(vk_nokey) {draw_sprite(scaxumba,0,x,y)}
if keyboard_check(vk_up) {draw_sprite(scaxumba,-1,x,y)}
if place_free(x,y+1) {draw_sprite(scabeca,-1,x-4,y-15)}
Eu comecei agora e estava trabalhando com o sprite_index no step, mas como quero mesclar mais de uma ao mesmo tempo, não preciso mais usar no step o image_index né? Agora tenho que desenhar as sprites no evento draw. Consegui espelhar a imagem pra esquerda quando ando pra esquerda, mas quando solto o botão (vk_nokey) não consigo fazer o personagem parar para o lado que estava na ultima vez, ele volta para direita pq a sprite está voltada pra direita.
No sprite_index eu conseguia, no draw_sprite ainda não sei.
LincolnSalles
LincolnSalles

Data de inscrição : 20/09/2012
Reputação : 0
Número de Mensagens : 40
Prêmios : mudando sprite - Mudar apenas parte da sprite 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

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

Mensagem por Kapoty Dom 18 Nov 2012, 20:55

Crie uma variável chamada "dir" de direita e coloque o valor dela como 1.

Quando pressionar a tecla que movimenta para a esquerda, coloque o valor dela de -1.

Quando pressionar a tecla que movimenta para a direita, coloque o valor dela de 1.

Ao desenhar a sprite parada, use :

Código:
draw_sprite_ext(scaxumba,0,x,y,dir,1,0,c_white,1)

Espero que tenha entendido.
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : mudando sprite - Mudar apenas parte da sprite Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

Mensagem por Rodrigo Santiago Dom 18 Nov 2012, 21:20

Não use o nokey, ele é muito perigoso! Dá bug facilmente. Use key released pra left e right!
Rodrigo Santiago
Rodrigo Santiago

Games Ranking : Nota B

Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Reputação : 73
Número de Mensagens : 1281
Prêmios : mudando sprite - Mudar apenas parte da sprite Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 3 Prata x 1 Bronze x 3

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

Ir para o topo Ir para baixo

mudando sprite - Mudar apenas parte da sprite Empty Re: Mudar apenas parte da sprite

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