Obrigado por visitar a The Game Makers Brasil Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais. |
Parar animação de um sprite / congelar animação no ultimo frame
- arthuzinho0705
- Novato
- Reações: 0
- Mensagens: 6
Parar animação de um sprite / congelar animação no ultimo frame
Sou iniciante e estou tentando fazer com que meu personagem, quando pule ou caia, que congele a imagem no ultimo frame:
no meu caso:
animação CAINDO tem 25 frames
quero que quando o ultimo frame for reproduzido que ele congele até cair no chão.
a minha animação está dando loop, nao quero isso, quero que ela congele a ultima imagem,
preciso de um tutorial completo, pois talvez eu esteja fazendo algo errado la do começo
no meu caso:
animação CAINDO tem 25 frames
quero que quando o ultimo frame for reproduzido que ele congele até cair no chão.
a minha animação está dando loop, nao quero isso, quero que ela congele a ultima imagem,
preciso de um tutorial completo, pois talvez eu esteja fazendo algo errado la do começo
- Chuaschinai
- Colaborador
- Reações: 6
- Mensagens: 198
-
Re: Parar animação de um sprite / congelar animação no ultimo frame
Pode ser mais simples do que pensa, faz assim pra ver se funciona:
Se e o numero da imagem atual for maior que os 25 frames, ele define que a imagem deve ser então o ultimo frame, você pode usar um numero direto ao invés do sprite_get_number().
Dependendo da velocidade da sprite ele pode não funcionar, porque velocidades muito altas fazem frames pularem, dai terá que usar outra maneira.
Edit:
A melhor forma de usar e até mais prática do que a dita a cima, é usar o evento AnimationEnd, criando esse evento é só colocar dentro dele assim:
Ele checa se a sprite atual chegou no final da animação, fazendo com que defina a ultima sprite.
Se e o numero da imagem atual for maior que os 25 frames, ele define que a imagem deve ser então o ultimo frame, você pode usar um numero direto ao invés do sprite_get_number().
Código: Selecionar todos
if(image_index >= sprite_get_number(sprite_index)-1){
image_index = sprite_get_number(sprite_index)-1;
}
Edit:
A melhor forma de usar e até mais prática do que a dita a cima, é usar o evento AnimationEnd, criando esse evento é só colocar dentro dele assim:
Código: Selecionar todos
if(sprite_index == sua_sprite){
image_index = sprite_get_number(sua_sprite)-1;
}
- arthuzinho0705
- Novato
- Reações: 0
- Mensagens: 6
Re: Parar animação de um sprite / congelar animação no ultimo frame
tentei colocar esse codigo, mas não tive êxito.
preciso entender do 0, aonde colocar, se devo usar alguma variavel.
o meu codigo é pequeno estou começando ainda, se quiser posso mandar aqui.
inclusive, quando meu personagem pula ele faz a animação de subir, mas chega no ponto 0 ele parece q entra no sprite parado e assim que desce ele entra na sprite caindo.
mas vamos resolver primeiro o loop que me incomoda mais
preciso entender do 0, aonde colocar, se devo usar alguma variavel.
o meu codigo é pequeno estou começando ainda, se quiser posso mandar aqui.
inclusive, quando meu personagem pula ele faz a animação de subir, mas chega no ponto 0 ele parece q entra no sprite parado e assim que desce ele entra na sprite caindo.
mas vamos resolver primeiro o loop que me incomoda mais
- arthuzinho0705
- Novato
- Reações: 0
- Mensagens: 6
- Chuaschinai
- Colaborador
- Reações: 6
- Mensagens: 198
-
Re: Parar animação de um sprite / congelar animação no ultimo frame
Testei aqui seu código, e parece estar tudo certo, somente na animação que ele sobe ele fica em loop, então eu coloquei o mesmo código no AnimationEnd e funcionou tudo normal.
Aquele primeiro código que te passei, ele tinha que ser baseado na sprite_index talvez por isso não estivesse funcionando, porém o segundo com toda certeza funciona. Tente assim:
Basicamente retire o primeiro código que te mandei:
E Coloque no AnimationEnd o mesmo código só que para quando estiver subindo:
Ou seja quando ele estiver subindo ele realizará somente um loop, e quando estiver caindo também.
O AnimationEnd serve para coisas como esta, quando você especifica qual sprite_index é a atual, você pode fazer uma lógica baseada no seu ultimo frame.
Dessa forma que te passei, com certeza deve funcionar.
Aquele primeiro código que te passei, ele tinha que ser baseado na sprite_index talvez por isso não estivesse funcionando, porém o segundo com toda certeza funciona. Tente assim:
Basicamente retire o primeiro código que te mandei:
Código: Selecionar todos
if(image_index >= sprite_get_number(spr_stick_caindo)-1){
image_index = sprite_get_number(spr_stick_caindo)-1;
}
Código: Selecionar todos
if(sprite_index == spr_stick_caindo){
image_index = sprite_get_number(spr_stick_caindo)-1;
}
if(sprite_index == spr_stick_pulando){
image_index = sprite_get_number(spr_stick_pulando)-1;
}
O AnimationEnd serve para coisas como esta, quando você especifica qual sprite_index é a atual, você pode fazer uma lógica baseada no seu ultimo frame.
Dessa forma que te passei, com certeza deve funcionar.
- arthuzinho0705
- Novato
- Reações: 0
- Mensagens: 6
Re: Parar animação de um sprite / congelar animação no ultimo frame
Opa, vou testar assim que eu puder, e te respondo aqui.
- arthuzinho0705
- Novato
- Reações: 0
- Mensagens: 6
Re: Parar animação de um sprite / congelar animação no ultimo frame
Então, eu coloquei e não resolveu...
mas...
eu notei uma coisa que estava acontecendo e eu nao tinha visto...
a animação reinicia muito antes dos ultimos frames... ou seja, a animação não está indo até o fim... ela da o loop antes de terminar... talvez o erro esteja ai
EDIT:
Alterei a altura do pulo, na subida esta tudo ok, só na descida mesmo q ta bugando.
E acredito q o bug q ta dando qdo ele chega no pico do pulo seja o loop dando erro na descida
mas...
eu notei uma coisa que estava acontecendo e eu nao tinha visto...
a animação reinicia muito antes dos ultimos frames... ou seja, a animação não está indo até o fim... ela da o loop antes de terminar... talvez o erro esteja ai
EDIT:
Alterei a altura do pulo, na subida esta tudo ok, só na descida mesmo q ta bugando.
E acredito q o bug q ta dando qdo ele chega no pico do pulo seja o loop dando erro na descida
- Chuaschinai
- Colaborador
- Reações: 6
- Mensagens: 198
-
Re: Parar animação de um sprite / congelar animação no ultimo frame
Você colocou no AnimationEnd quando ele esta caindo também?, porque eu testei aqui e tinha funcionado com o seu código, ele só rodava uma vez
e permanecia no ultimo frame sem problemas, tanto na animação de subida quanto na de descida.
e permanecia no ultimo frame sem problemas, tanto na animação de subida quanto na de descida.
- arthuzinho0705
- Novato
- Reações: 0
- Mensagens: 6
Re: Parar animação de um sprite / congelar animação no ultimo frame
ANIMATION END
Mano, to começando a suspeitar da minha animação, ou algo q nao configurei direito.
to fazendo upload das imagens no meu album aqui do forum, interessante ter isso num forum... kkkk nao sabia, assim nao preciso mandar aqui
Código: Selecionar todos
if(sprite_index == spr_stick_caindo){
image_index = sprite_get_number(spr_stick_caindo)-1;
}
if(sprite_index == spr_stick_pulando){
image_index = sprite_get_number(spr_stick_pulando)-1;
}
to fazendo upload das imagens no meu album aqui do forum, interessante ter isso num forum... kkkk nao sabia, assim nao preciso mandar aqui
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante