arthuzinho0705
Novato
Novato
Autor
Mensagens: 6
Registrado em: Seg Mai 25, 2020 11:54 pm
Karma: 0

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

Ter Mai 26, 2020 12:06 am

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
 
grononmc
Colaborador
Colaborador
Mensagens: 58
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 104

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

Ter Mai 26, 2020 12:22 am

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().
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:
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.
 
arthuzinho0705
Novato
Novato
Autor
Mensagens: 6
Registrado em: Seg Mai 25, 2020 11:54 pm
Karma: 0

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

Ter Mai 26, 2020 12:44 am

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
 
arthuzinho0705
Novato
Novato
Autor
Mensagens: 6
Registrado em: Seg Mai 25, 2020 11:54 pm
Karma: 0

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

Ter Mai 26, 2020 12:51 am

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
 
grononmc
Colaborador
Colaborador
Mensagens: 58
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 104

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

Ter Mai 26, 2020 9:40 am

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:
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:
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.
 
arthuzinho0705
Novato
Novato
Autor
Mensagens: 6
Registrado em: Seg Mai 25, 2020 11:54 pm
Karma: 0

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

Ter Mai 26, 2020 11:44 am

Opa, vou testar assim que eu puder, e te respondo aqui.
 
arthuzinho0705
Novato
Novato
Autor
Mensagens: 6
Registrado em: Seg Mai 25, 2020 11:54 pm
Karma: 0

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

Ter Mai 26, 2020 1:32 pm

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
 
grononmc
Colaborador
Colaborador
Mensagens: 58
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 104

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

Ter Mai 26, 2020 2:46 pm

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.
 
arthuzinho0705
Novato
Novato
Autor
Mensagens: 6
Registrado em: Seg Mai 25, 2020 11:54 pm
Karma: 0

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

Ter Mai 26, 2020 7:49 pm

ANIMATION END

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