Página 1 de 1

Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 12:06 am
por arthuzinho0705
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

Re: Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 12:22 am
por Chuaschinai
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().

Código: Selecionar todos

if(image_index >= sprite_get_number(sprite_index)-1){
  image_index = sprite_get_number(sprite_index)-1;
}
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:

Código: Selecionar todos

if(sprite_index == sua_sprite){
   image_index = sprite_get_number(sua_sprite)-1;
}
Ele checa se a sprite atual chegou no final da animação, fazendo com que defina a ultima sprite.

Re: Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 12:44 am
por arthuzinho0705
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

Re: Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 12:51 am
por arthuzinho0705
segue meus codigos:
Create: Clique para ver o conteúdo
Step: Clique para ver o conteúdo
Animation End: Clique para ver o conteúdo

Re: Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 9:40 am
por Chuaschinai
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:

Código: Selecionar todos

if(image_index >= sprite_get_number(spr_stick_caindo)-1){
 image_index = sprite_get_number(spr_stick_caindo)-1;
}
E Coloque no AnimationEnd o mesmo código só que para quando estiver subindo:

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;
}
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.

Re: Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 11:44 am
por arthuzinho0705
Opa, vou testar assim que eu puder, e te respondo aqui.

Re: Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 1:32 pm
por arthuzinho0705
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

Re: Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 2:46 pm
por Chuaschinai
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.

Re: Parar animação de um sprite / congelar animação no ultimo frame

Enviado: Ter Mai 26, 2020 7:49 pm
por arthuzinho0705
ANIMATION END

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;
}
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