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
» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56


[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