Conectar-se
Quem está conectado
20 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 20 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 14/06/2011
Número de Mensagens : 1
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Animation_end funciona?

em Ter 14 Jun 2011, 13:23
Pessoal, estou com uma dúvida no meu game de luta:

Existe um objeto de controle que não possui sprite_index;
No evento Draw desse objeto, faço os seguintes comandos:

draw_sprite (r1,-1, (20,130);
draw_sprite (r2,-1, (75,130);
draw_sprite (r3,-1, (200,130);

Os sprites r1, r2 e r3 são gifs animados;
r1 tem 25 quadros; r2 tem 17 quadros e r3 recebe um gif externo e não tem como precisar a quantidade de quadros inicialmente. Não dá para separar esses sprites em objetos distintos, pois a programação está avançada e muitos objetos dependem deste.

Eu gostaria que quando r1 acabasse acontecesse alguns comandos. Quando r2 acabasse acontecesse outros comandos e quando r3 acabasse acontecesse novos comandos.

Pensei em algo do tipo, no "step":

if animation_end (r1) {
alguns comandos;
}

if animation_end (r2) {
outros comandos;
}

if animation_end (r3) {
novos comandos;
}

Obviamente isso não funcionou. Alguém tem alguma solução?
avatar
Ranking : Nota A
Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Número de Mensagens : 1087
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 30

Prêmios
   : 2
   : 1
   : 0
Ver perfil do usuáriohttp://www.mathaeuz.deviantart.com

Re: Animation_end funciona?

em Ter 14 Jun 2011, 13:29
Quando se põe "-1" no campo de "image_index" do draw, o GameMaker usará o valor da image_index do objeto.
Então primeiramente tente criar 3 objetos diferentes ou entao 3 variáveis para gravar as image_index.

Quando preciso checar se a animação acabou em código eu uso:
Código:
if floor(image_index)=sprite_get_number(sprite_index)-1
floor() retorna o valor arredondado para baixo.
Assim, se o valor de image_index estiver quebrado (talvez por se usar image_speed fracionária), ele será corrigido.
sprite_get_number(sprite) retorna o numero de quadros da sprite indicada.
O número do ultimo frame de uma sprite é sempre o numero de quadros menos 1.
Assim, "sprite_get_number(sprite)-1" é o valor do ultimo frame.
Agora basta adaptar isso ao seu sistema.
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum