bug frames passando fora de ordem

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

bug frames passando fora de ordem

Mensagem por glaysonmestre em Dom 27 Out 2013, 16:01

tenho d um chute com 7 frames coloquei ele para funcionar quando apertace um botao so quando aperto
ele começa cada hora de um frame diferente alguem sabe como obrigar ele a começar do zero e termina no ultimo?




glaysonmestre

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

Voltar ao Topo Ir em baixo

Re: bug frames passando fora de ordem

Mensagem por PedroX em Dom 27 Out 2013, 16:15

A image_speed deve ter valores como 1/16, 1/8, 1/4, 1/2 para garantir que todos os frames serão mostrados.

Se, por exemplo, fosse 1/9 (0.1111111111111...), o GM poderia (não tenho certeza de como ele arredonda) pular alguns valores, ainda mais se o image_index não for limitado (geralmente ele chega aos milhares).

Como limitar?
Código:
image_index = image_index mod image_number;

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: bug frames passando fora de ordem

Mensagem por glaysonmestre em Ter 29 Out 2013, 09:38

sou pupilo ainda nao entendi nada mas eu tenho os 7 frames cada um em um script vc podeia me explicar melhor como funciona isso q vc disse



este é so um script meu sao 7 eles passam um por um em ordem mas mesmo assim as vezes quando chega na ultima imagem  mostra a imagem 0 rapido ou as vezes começa de um frame totalmente diferente   onde eu colocaria este dodigo q vc falou ? de um exemplo ai '-'
Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=0

 

if tempo_no_estado=1{    
 proximo_estado=st_chuteroda1
 return(estado_proximo)    
 }
 return(estado_continua)

glaysonmestre

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

Voltar ao Topo Ir em baixo

Re: bug frames passando fora de ordem

Mensagem por saim em Ter 29 Out 2013, 21:03

Não sei se você conhece a terminologia envolvida... Se você não entendeu a resposta do PedroX, talvez não conheça.
sprite_index é a sprite que será mostrada
image_index é o frame da sprite
image_speed é a velocidade em que se passa os frames, medida em steps. A cada step, o valor de image_index será aumentada no valor de image_speed
O manual tem um bocado mais de informação que você pode achar útil. image_xscale, image_yscale, image_angle, image_blend, image_alpha.

Nesse seu código, todo o tempo em que o objeto estiver nesse estado, a image_index será zero. A menos que a primeira parte não esteja no script. Veja bem, nesse código você escreveu "image_index=0", então toda vez que o script for lido, a image_index vai pra zero.

Mais que isso, colocou pra sair do estado assim que ele entrar! No primeiro step desse estado o "tempo_no_estado" será "1", ou seja, vai sair do estado.

Quer dizer, provavelmente não a imagem está sendo mostrada num outro estado em que você não definiu a sprite_index. Estranho é a animação PARAR depois disso.

Ou então você falou sério quando disse que tem 1 frame em cada script. Eu não acreditei, presumi que fosse alguma confusão sua na hora de escrever. Se for o caso, gostaria de ver todos os scripts.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: bug frames passando fora de ordem

Mensagem por glaysonmestre em Qua 30 Out 2013, 07:20

sei q sprite index e a sprite mostrada e q imag speed e a velocidade e q image index e um frame do sprite,,
o jogo nao tava respeitando a ordem dos frames mesmo eu deixando em um estado ,,,ai resolvi separa nao e de hoje q uso os frames separados em scripts fica mais facil controlar cada um , mas comecou a dar o mesmo problema de quando eu usava tudo em um script so, eu acho ate impossivel isso ta acontecendo por q quando sai do estado parrado ele passa por todos os scripts em ordem eu ja olhei no debug eu acho q pode ta relacionado a isso q pedro falou mas nao sei como usar isso q ele disse andei pesquisando nao entendi muito


st_rodape0

Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=0

 

if tempo_no_estado=1{    
 proximo_estado=st_chuteroda1
 return(estado_proximo)    
 }
 return(estado_continua)
st_rodape1
Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=1

 

if tempo_no_estado=1{    
 proximo_estado=st_chuteroda2
 return(estado_proximo)    
 }
 return(estado_continua)
st_rodape2
Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=2

 

if tempo_no_estado=1{    
 proximo_estado=st_chuteroda3
 return(estado_proximo)    
 }
 return(estado_continua)

st_rodape3
Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=3

 

if tempo_no_estado=1{    
 proximo_estado=st_chuteroda4
 return(estado_proximo)    
 }
 return(estado_continua)
st_rodape4
Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=4

 

if tempo_no_estado=1{    
 proximo_estado=st_chuteroda5
 return(estado_proximo)    
 }
 return(estado_continua)
st_rodape5
Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=5

 

if tempo_no_estado=1{    
 proximo_estado=st_chuteroda6
 return(estado_proximo)    
 }
 return(estado_continua)
st_rodape6
Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=6

 

if tempo_no_estado=1{    
 proximo_estado=st_chuteroda7
 return(estado_proximo)    
 }
 return(estado_continua)
st_rodape7
Código:
sprite_index=spr_rodape
image_speed=0.5;
image_index=7

 

if tempo_no_estado=7{    
 proximo_estado=st_parado
 return(estado_proximo)    
 }
 return(estado_continua)


Última edição por glaysonmestre em Qua 30 Out 2013, 09:40, editado 1 vez(es)

glaysonmestre

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

Voltar ao Topo Ir em baixo

Re: bug frames passando fora de ordem

Mensagem por PedroX em Qua 30 Out 2013, 08:55

Tenho uma pergunta: como você escolhe qual script é executado?

Uma dica: use argumentos e então precisará de só um script:

Na hora de executar
scr_rodape(valor_0_a_7)

E no script:

image_index = argument0;

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: bug frames passando fora de ordem

Mensagem por glaysonmestre em Qua 30 Out 2013, 09:43

o script do estado principal parado coloquei (>) na frente de todos os comentarios o forum ta gerando uns codigos estranhso quando interpreta  (//) transforma em http://
(script parado)
Código:
sprite_index=spr_parado image_speed=0.4      // << estado parado
>//-------------------------------------------}

 if slide=true and keyboard_check(tras)and keyboard_check(SF)and keyboard_check(CM)
{                
 proximo_estado=st_slide0            
 return(estado_proximo_agora)            
}

>//----[[movimentaçao]]-------------------------------------------------------------------------------------------------------------
>//
if keyboard_check(tras)
{                
 proximo_estado=st_tras              
 return(estado_proximo_agora)            
}
           >//------
          
if  keyboard_check (frente)
{                
 proximo_estado=st_front      
 return(estado_proximo_agora)            
 }
          >//-------
          
if  keyboard_check(baixo)
{                
 proximo_estado=st_abaixado      
 return(estado_proximo_agora)            
 }
        >//--------

 if  Chao=true and parado=true and keyboard_check(cima)
{                
 proximo_estado=st_pulando0      
 return(estado_proximo_agora)            
 }

>//---------[[socos]]-----------------------------------------------------------------------------------------------------------------------------  
    
      
  if  gancho=false and Chao=true and parado=true and keyboard_check_pressed (SM)
{                
 proximo_estado=st_punch0      
 return(estado_proximo_agora)            
 }

 
 
>//o gancho esta dentro do estado abaixado

>///----[[[[[chutes]]]]]]---------------------------------------------------------------------------------------------------------------------------------------------------------------------




                                   > // magia4 false evita q chute quando der magia do gelo no chao
 if gancho=false and Chao=true and magia4=false and parado=true and keyboard_check_pressed (SF)
{                
 proximo_estado=st_chute_fraco_empe0      
 return(estado_proximo_agora)            
 }

 if keyboard_check_pressed (CM)
{                
 proximo_estado=st_kick0
 return(estado_proximo_agora)            
 }







 
 
>//----[[[[magias]]]]------------------------------------------------------------------------------------------------------------
 
 >//gelo1
>//gelo
if gelo=true {            
proximo_estado=st_gelomov    
 return (estado_proximo_agora)
 }
>//-----------------------------------------------------------------------------------------------------------------
>//gelo2

if  gelonochao=true   {          
proximo_estado=st_gelonochaomov0    
 return (estado_proximo_agora)
 }
 



 
>//----------------------------------------------------------------------------------------------------------------------------------
>>//golpes    



return(estado_continua)
meu step

Código:
st_maquinadeestados(st_defaut)



           
                                                               
>//------[[[[[movimentaçao do gelo]]]]--------------------------------------------------------------------------------------------------------

if ativo1=0 and Chao=true and keyboard_check(baixo) magia1=true  >// se tiver no chao magia1 fica true e cmeçaa a contar um tempo                       
if magia1=true timegolpe1+=1                                    >// magia1 fica true
if timegolpe1=10 magia1=false                                  >// se a magia for no tempo 10 magia1 fica false         
if magia1=false timegolpe1=0                                  >//se a magia ficar false o timegolpe zera
                                               
>//------------------------------------------------------------------------
if ativo1=0 and Chao=true and keyboard_check_pressed(frente) or
keyboard_check_released(frente) or keyboard_check(frente) and magia1=true magia2=true           
if magia2=true timegolpe2+=1                          >// se chao tiver true e apertar pra frente e a magia1 tiver true magia2 vai ficar true somente se a magia 1 tiver true
if timegolpe2=10 magia2=false                        >// se a magia 2 tiver true o timegolpe2 começa a contar se o time golpe tiver  em 10 magia2 fica false ai magia2 fica false
if magia2=false timegolpe2=0                 

if keyboard_check_pressed(SR)or keyboard_check_released(SR) and magia2=true gelo=true
 


>//------[[[[[[[[se o gelo no chao estiver na tela nao soltar outro ]]]]]------------------------------------------------------------

if instance_exists(obj_gelonochao){ativo1=1}
if ativo1=1 tempogeloderrete+=1
if tempogeloderrete=245 ativo1=0  >// tempo q pode soltar o gelo denovo
if ativo1=0  tempogeloderrete=0  >/// se ativo1 tiver 1 nao pode soltar gelo     

>//------[[[[[[[[movimentaçao do gelo no chao]]]]]]]]]]--------------------------------------------------------------------------------------------------------
if Chao=true and ativo1=0 and keyboard_check(baixo) magia3=true  >// se tiver no chao magia1 fica true e cmeçaa a contar um tempo                       
if magia3=true timegolpe3+=1                                    >// magia1 fica true
if timegolpe3=10 magia3=false                                  >// se a magia for no tempo 10 magia1 fica false         
if magia3=false timegolpe3=0                                  >//se a magia ficar false o timegolpe zera
                                               
>//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if Chao=true and ativo1=0 and keyboard_check_pressed(tras) or
keyboard_check_released(tras) or keyboard_check(tras) and magia3=true magia4=true           
if magia4=true timegolpe4+=1                          >// se chao tiver true e apertar pra frente e a magia1 tiver true magia2 vai ficar true somente se a magia 1 tiver true
if timegolpe4=10 magia4=false                        >// se a magia 2 tiver true o timegolpe2 começa a contar se o time golpe tiver  em 10 magia2 fica false ai magia2 fica false
if magia4=false timegolpe4=0                 

if ativo1=0 and keyboard_check_pressed(SR)or keyboard_check_released(SF) and magia4=true  gelonochao=true

 if magia3=true and magia4=true impedir=1
 else impedir=0
>//---------------------------------------------------------------------------------------------------------------------------------------------------------
>//abaixar
 



>//-------------------------------------------------------------------------------------------------------------------------------------------------------------

>// soco alto ficar true para mudar de estado

if abaixado=false and Chao=true and parado=true or parado=false and keyboard_check_pressed(SM) socoforte=true
else socoforte=false





>//-------------------------------------------------------------------------------------------------------------------------------------------------------------
>//defesa alta  funcionando

if gancho=false and Vspeed=0 and Chao=true and abaixado=false and  (keyboard_check(CR))
{
 sprite_index=spr_defesa;>//troca de sprite para o sprite que vc quer
 if (image_index>image_number-1){image_index=image_number-1;}>//verifica se esta na ultima frame do sprite e se estiver, fica na ultima frame.
}
>//------------------------------------------------------------------------------------------------------------------------------------------------------
>// variavel impede de pular



 >// variavel parado  !!!
if keyboard_check(frente) and spr_frente or keyboard_check(tras)and spr_tras  or Vspeed <0  parado=false
else parado=true


>// variaveeis abaixado
if  keyboard_check(baixo) and Chao=true  abaixado=true
else abaixado=false

  >//  variavel defesa alta e baixa

if sprite_index=spr_defesa and Chao=true or sprite_index=spr_defesabaixa and Chao=true  defendendo=true
else defendendo=false

  >// variavel gancho
if sprite_index=spr_gancho gancho=true
else gancho=false

>//variavel se tiver true ja pode executar o slide
if sprite_index=spr_tras and keyboard_check(tras) and parado=false and Chao = true and abaixado=false slide=true
else slide=false
>//------------------------------------------------------------------------------------------------------------------------------------------------------
>//  variavel vai ativar o hspeed
if sprite_index=spr_slide or sprite_index=spr_slide1 slide2=true
else slide2=false


if slide2=true Hspeed= +8 >///-----------> slide vai pra frente
if slide2=false Hspeed=0  >///--------> slide para quando acaba animaçao
>//-------------------------------------------------------------------------------------------------------------------------------------------------------
 
              >//scripts de gravidade friction etc...
scr_hspeed(Hspeed,2,obj_chao);


              >//Zera o Vspeed se bater no chão ou no teto.
if !scr_vspeed(Vspeed,2,obj_chao){
Vspeed=0;
}

                >//Friction
Hspeed = scr_friction(0.10,Hspeed);

                >//Gravidade:
if place_free(x,y+1) && !place_meeting(x,y+1,obj_chao){
Vspeed = scr_gravidade(1,Vspeed);
Chao = false;
}else{
Chao = true;
Vspeed= 0;

}
>//---------------------------------------------------------------------------------------------------------------------------------------------------------

>//Pulo vertical
if parado=true and Chao=true  and keyboard_check(cima) {
Vspeed =-14
}
>//-----------------------------------------------------------------------------------------------------------------------------------------------------------


>//pulo frente e tras



>//------------------------------------------------------------------------------------------------------------------------------------------------------------
>// anular teclas



if sprite_index=spr_socos  and Chao=true frente=ND
if sprite_index=spr_socos  and Chao=true tras=ND
if sprite_index=spr_abaixa and Chao=true tras=ND
if sprite_index=spr_abaixa and Chao=true frente=ND
if sprite_index=spr_pulareto cima=ND;
if sprite_index=spr_pulareto and Chao=true cima=ND;
if sprite_index=spr_parado and Chao=true cima=vk_up;
if sprite_index=spr_gancho and Chao=true cima=ND;
if sprite_index=spr_gelomov and Chao=true cima=ND;
if sprite_index=spr_abaixa and Chao=true cima=ND ;
if sprite_index=spr_defesa and Chao=true cima=ND
if sprite_index=spr_defesa and Chao=true  frente=ND
if sprite_index=spr_defesa and Chao=true  tras=ND
if slide=true cima=ND

if sprite_index=spr_chute_fraco and Chao=true  cima=ND
if sprite_index=spr_chute_fraco and Chao=true gelonochao=false
if sprite_index=spr_gancho and Chao=true  gelonochao=false





>//voltar ao normal

if sprite_index= spr_parado and Chao=true cima = vk_up
if sprite_index= spr_parado and Chao=true frente = vk_right
if sprite_index= spr_parado and Chao=true  baixo = vk_down
if sprite_index= spr_parado and Chao=true  tras = vk_left

>//---------------------------------------------------------------------------------------------------------------------------------------------------------------

 

glaysonmestre

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

Voltar ao Topo Ir em baixo

Re: bug frames passando fora de ordem

Mensagem por Conteúdo patrocinado Hoje à(s) 22:32


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