- Data de inscrição : 01/01/2013
Número de Mensagens : 187
Insígnias de JAM :x 0
x 0
x 0
Reputação : 1
Prêmios: 0
: 0
: 0
bug frames passando fora de ordem
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?
ele começa cada hora de um frame diferente alguem sabe como obrigar ele a começar do zero e termina no ultimo?
- Ranking :
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6041
Insígnias de JAM :x 0
x 0
x 0
Reputação : 295
Prêmios:
:
:
Re: bug frames passando fora de ordem
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?
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;
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
- Data de inscrição : 01/01/2013
Número de Mensagens : 187
Insígnias de JAM :x 0
x 0
x 0
Reputação : 1
Prêmios: 0
: 0
: 0
Re: bug frames passando fora de ordem
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 '-'
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)
- Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :x 0
x 0
x 0
Reputação : 121
Prêmios: 1
: 0
: 3
Re: bug frames passando fora de ordem
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.
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.
- Data de inscrição : 01/01/2013
Número de Mensagens : 187
Insígnias de JAM :x 0
x 0
x 0
Reputação : 1
Prêmios: 0
: 0
: 0
Re: bug frames passando fora de ordem
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
st_rodape3
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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- Ranking :
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6041
Insígnias de JAM :x 0
x 0
x 0
Reputação : 295
Prêmios:
:
:
Re: bug frames passando fora de ordem
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;
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;
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
- Data de inscrição : 01/01/2013
Número de Mensagens : 187
Insígnias de JAM :x 0
x 0
x 0
Reputação : 1
Prêmios: 0
: 0
: 0
Re: bug frames passando fora de ordem
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)
(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)
- 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
>//---------------------------------------------------------------------------------------------------------------------------------------------------------------
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum