GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[DUVIDA] Loop Maquina de Estados.

5 participantes

Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty [DUVIDA] Loop Maquina de Estados.

Mensagem por †Des† Sex 25 Nov 2011, 14:10

Estou tendo alguns probleminhas com a maquina de estados, o problema é com um loop simples para usar em um Dash.

Ele funciona assim:
Ao apertar tecla de Dash, ele joga hspeed +12 ou -12 de acordo com a direção, e um loop faria o decremento ou incremento para retornar a zero. Mas o loop so funciona na primeira repetição e o hspeed fica como 11 e n retorna a zero.


Última edição por †Des† em Dom 27 Nov 2011, 20:20, editado 1 vez(es)
†Des†
†Des†

Data de inscrição : 21/12/2008
Reputação : 1
Número de Mensagens : 29
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por Convidad Sex 25 Nov 2011, 15:06

Você pode tentar usar um choose() ,mas ao certo,não entendi sua dúvida,me explique melhor.....
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por Klior Sex 25 Nov 2011, 16:16

já tentou usar friction em vez de fazer um loop?
Klior
Klior

Data de inscrição : 07/03/2010
Reputação : 13
Número de Mensagens : 426
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • C#
  • Javascript


Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por saim Sex 25 Nov 2011, 17:38

Provavelmente, esse decremento só está previsto pra um estado. Ao entrar em outro estado, o decremento não é mais levado em conta.
A máquina de estados é um dos motivos por que eu não uso mais as built-ins. Fica muito complicado prever tudo pra todos os estados. Programar cada um separadamente requer que você possa deixar de lado a preocupação com um monte de problemas advindos das built-ins.

Talvez você precise de mais um estado pra permanecer até a velocidade voltar a zero.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por GameMakerTutoriais Sex 25 Nov 2011, 18:43

Mas o loop so funciona na primeira repetição e o hspeed fica como 11 e n retorna a zero.

Se ele funciona certinho na primeira repetição, possivelmente pode ser porque há uma variável que está com o valor "certo" antes do primeiro loop, mas no segundo loop o valor dela já foi alterado. Será que é isso? Tenta conferir todas as variáveis que você tá usando e, se for isso, reatribuir o valor certo delas antes do loop.

De qualquer forma, um bom recurso também seria usar friction. Não dá pra saber como o seu jogo tá programado (e se dá pra usar friction), mas você também poderia conferir se o valor do dash é positivo ou negativo, e agir de acordo com o valor:

Código:
incremento_ou_decremento := - sign(speed_dash);

Agora, simulado o cálculo do loop:

Código:
hspeed += incremento_ou_decremento * 10


avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por †Des† Sáb 26 Nov 2011, 23:33

Acho que nao consegui me expressar bem:

Vou tentar resumir o funcionamento do que eu queria que acontecesse.

Quando ele entra no estado Dash, a HSPEED ganha 12 ou -12 dependendo da direção, após isso, um if ou while faria a verificação "Se Hspeed maior ou menor que 0", ele acrecentaria ou decrementaria 1 para HSPEED até que a mesma retorne a zero e o personagem pare.

No objeto do player eu fiz num evento step, e foi tranquilo, usando apenas um IF.
If hspeed > 0 // para direita
{hspeed-=1;} //a cada step hspeed perde 1 unidade até zero.

Mas como nos scripts de estados nao temos steps (ou eu acho que não), eu tentei com IF e While, e nenhum resultou, no While ele retorna o hspeed a zero de forma MUITO RAPIDA que o personagem chega a nem se mecher. E no IF é decrementado apenas 1 e o Hspeed fica em 11.
†Des†
†Des†

Data de inscrição : 21/12/2008
Reputação : 1
Número de Mensagens : 29
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por Klior Dom 27 Nov 2011, 10:51

como eu disse antes, você já tentou usar friction?
faça o teste:
no create event do objeto coloque:
friction = 0.3;
agora no evento keyboard check pressed right:
hspeed = 12;
execute o jogo e veja se é isso que você queria.
Klior
Klior

Data de inscrição : 07/03/2010
Reputação : 13
Número de Mensagens : 426
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • C#
  • Javascript


Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por PedroX Dom 27 Nov 2011, 13:26

Mas como nos scripts de estados nao temos steps (ou eu acho que não), eu tentei com IF e While, e nenhum resultou, no While ele retorna o hspeed a zero de forma MUITO RAPIDA que o personagem chega a nem se mecher. E no IF é decrementado apenas 1 e o Hspeed fica em 11.
Não entendi sua primeira frase.
No caso do while, ele faz tudo em um único step, ou seja, para o jogo até terminar de executar. Assim vai parar duma vez.

No caso do if, era para funcionar.
Manda uma screenshot do seu step, se possivel.

Até mais!

_________________


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:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por saim Dom 27 Nov 2011, 16:05

Nos scripts de estados nós temos steps sim.
Ou melhor, os scripts de estados podem ocorrer a cada step. Tente visualizar a máquina funcionando: você entra num estado, executa algumas ações e a máquina continua rodando, entra no outro step no mesmo estado, executa as mesmas ações e a máquina continua rodando... Aí, finalmente, você entra no outro step no mesmo estado, executa algumas ações, mas aí a máquina encontra a condição pra você entrar em outro estado.
Você altera a variável que armazena o estado e executa o script desse outro estado OU NÃO nesse mesmo step. E a máquina continua rodando. Daí você entra no outro step nesse outro estado. As ações a serem executadas, agora, são outras. Nada a ver com o estado anterior. Nada a ver com diminuir a velocidade do dash.
Entendeu o que eu quis dizer com "talvez você esteja entrando em outro estado logo de cara e talvez precise de um estado totalmente novo só pra reduzir a velocidade"?
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por †Des† Dom 27 Nov 2011, 17:14

Obrigado pessoal, agora eu entendi o que se passava...

Com base noq o Saim disse, eu percebi que o meu estado estava programado errado pelo simples fato de eu adicionar a HSPEED dentro do próprio estado, fazendo um loop infinito:

Entra estado:
HSPEED + ou - 12.
IF HSPEED > ou < que zero, incrementa ou decrementa.
E isso causava o bug de apenas diminuir 1 unidade nos steps, pq a HSPEED voltava a 12 sempre nos proximos steps.

Eu fiz as modificações aqui e deu certo, mas agora eu gostaria de tirar outra pequena dúvida em relação a fazer um "delay" para as ações, no caso desse DASH, eu gostaria que o player nao pudesse usa-lo seguidamente tão rápido. Com um delay de 1segundo mais ou menos.
†Des†
†Des†

Data de inscrição : 21/12/2008
Reputação : 1
Número de Mensagens : 29
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por PedroX Dom 27 Nov 2011, 19:22

Crie uma variavel que tenha o valor true quando você estiver em dash.
Ao dar o dash, verificar se a variavel é true, se for, definir como false e ativar um alarm.
No alarm, definir como true.

Até mais!

_________________


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:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por †Des† Dom 27 Nov 2011, 20:05

Tudo perfeito agora pessoal, mas só uma correção quanto a resolução do problema aqui:

O if dentro do estado ainda não funciona, mas o friction no obj_player sim, quando eu jogo HSPEED 12 o friction que faz o decremento, e o script do estado cuida do resto.
†Des†
†Des†

Data de inscrição : 21/12/2008
Reputação : 1
Número de Mensagens : 29
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por saim Seg 28 Nov 2011, 09:50

Ótimo. Só tome cuidado com o seguinte:
As built-ins não levam em conta se você está usando a máquina de estados ou não. Portanto, se você coloca uma fricção, gravidade ou velocidade, eles continuarão com os valores dados mesmo que você mude de estado.
Por um lado, isso é bom, porque você não vai ter que se preocupar em organizar os valores em TODOS os estados.
Por outro, é péssimo, porque você pode querer um controle dessas variáveis "na mão", e não terá isso. Por exemplo, você tem o estado "andando", no qual a fricção é necessária e a gravidade, não.
Então, restam duas opções pra manter o uso das built-ins: alterar o valor dessas variáveis a cada step dentro do estado (o que consome uma quantidade desnecessária de processamento) ou cuidar de cada uma dessas variáveis na mudança entre estados, o que é um pouco trabalhoso e elimina a parte boa de usar as built-ins, mas funciona.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [DUVIDA] Loop Maquina de Estados. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[DUVIDA] Loop Maquina de Estados. Empty Re: [DUVIDA] Loop Maquina de Estados.

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos