Ação ao fim da animação

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Ação ao fim da animação

Mensagem por TitaniaLilith em Sab 29 Mar 2014, 16:42

confused 
Boa tarde! Eu estou com o seguinte problema:
Meu personagem atira flechas. Eu fiz uma linda sprite dele atirando essas flechas, programei e até então está funcionando muito bem, obrigada.
Vejam o código:
Código:
if keyboard_check_pressed(vk_space)&& (lado==1) //se a tecla space for pressionada e o lado for direita
{
sprite_index=spr_atk_dir; //muda para sprite do player atacando a flecha
image_speed=0.4 //muda a velocidade da sprite
if global.flechas>=1 //se a variavel flechas for maior ou igual a 1
{
instance_create(x+2,y,obj_flechadir) //cria o objeto flechadir
global.flechas-=1 //tira 1 da variavel flecha
}
else
{
global.flechas=0 //senão a variavel flecha fica 0
}

Bem, não tenho problemas com isso, o meu problema é que a animação ocorre muito rápido, ou não ocorre, ela começa, a flecha sai e a animação acaba, não é possível ver o personagem atacando a flecha. Queria que a flecha saisse apenas depois da animação, talvez seja possivel com o botão Animation End, mas quero aprender a fazer isso no código, não quero mudar...

Bem, se puderem me ajudar serei a menina mais feliz do mundo  Happy 

________________________________________________________________________________________________________



TitaniaLilith

Número de Mensagens : 13
Idade : 23
Data de inscrição : 01/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ação ao fim da animação

Mensagem por Mr. Kaleb em Sab 29 Mar 2014, 17:12

Mas minha cara, o Animation End é feito justamente para esse tipo de problema.
Porém, você pode fazer de um outro jeito.

Primeiro, vá na sprite do seu personagem e veja o número da última sub-imagem dele. Pra fins educativos, vamos chamá-la de num.
Então, no seu código, você troca a parte correspondente por essa:
Código:
if global.flechas>=1 || image_index=num //se a variavel flechas for maior ou igual a 1 e a sub-imagem for a última,
{
instance_create(x+2,y,obj_flechadir) //cria o objeto flechadir
global.flechas-=1 //tira 1 da variavel flecha
}
Espero ter ajudado e até mais!

Mr. Kaleb

Ranking : Nota C
Número de Mensagens : 1400
Idade : 19
Data de inscrição : 07/09/2010
Notas recebidas : C
Reputação : 21
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ação ao fim da animação

Mensagem por Eudes - Hyo em Sab 29 Mar 2014, 17:20

Bom, sem o evento Animation End, tem outras formas.
"Um" modo é criando uma variável de 'estado' para servir como condição.
E usar o image_index. dá pra sacar já né?


Vc verifica se o image_index é o último da Sprite, aí vc executa sua ação.
No Create vc inicializa a variavel:
self.estado = "pronto";

E no seu código:
Step:

if keyboard_check_pressed(vk_space)&& (self.lado==1) //se a tecla space for pressionada e o lado for direita
{
    self.estado = "atirando"; //
    image_speed=0.05 //muda a velocidade da sprite
    sprite_index = sprite0;//muda para sprite do player atacando a flecha
}

if(self.estado == "atirando")
{
   
    if(image_index == 5)
    {
    self.estado = "pronto";
    if global.flechas>=1 //se a variavel flechas for maior ou igual a 1
    {
        instance_create(x+2,y,obj_flecha) //cria o objeto flechadir
        global.flechas-=1 //tira 1 da variavel flecha
    }
    else
    {
        global.flechas=0 //senão a variavel flecha fica 0
    }
    }
}

só adicionei umas 3 linhas ao seu código.
Caso ache ruim, posta ai, que o pessoal responde uma outra forma.

Eudes - Hyo

Ranking : Nota B
Número de Mensagens : 513
Idade : 32
Data de inscrição : 02/06/2009
Notas recebidas : E + B+B
Reputação : 27
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ação ao fim da animação

Mensagem por TitaniaLilith em Qui 03 Abr 2014, 21:25

Obrigada pessoas, consegui arrumar aqui usando as dicas e um pouco de meus conhecimentos hehe

Agradeço muito cheers

TitaniaLilith

Número de Mensagens : 13
Idade : 23
Data de inscrição : 01/04/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ação ao fim da animação

Mensagem por Conteúdo patrocinado Hoje à(s) 01:05


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum