Entrar
Últimos assuntos
» player não consegue andarpor 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
Dúvida urgente!!! Por favor me ajudem!
4 participantes
Página 1 de 1
Dúvida urgente!!! Por favor me ajudem!
Galera é o seguinte... estou terminando meu jogo para a faculdade e preciso entregá-lo hoje a noite... Entre alguns bugs e outros, tem um que está afetando a jogabilidade dele...
O jogo é plataforma e quando o inimigo me ataca, se eu estiver parado meu personagem sofre dano e a animação dele (tomando dano) é acionada.
Eu coloquei uma variavel de controle, para que quando ele seja atingido, ela torna-se 1 e, enquanto estiver 1, o personagem não pode se mover...
Pois bem, quando estou parado tudo funciona perfeitamente e eu não consigo mover meu personagem até que a animação de dano acabe.
Mas se por acaso eu estiver pressionando algum dos botões de movimento quando for atingido, meu personagem congela, e se eu apertar diversas vezes o botao de movimento, ele fica como se fosse em um loop, não deixando meu personagem se mover e nem acionar a animacao de dano.
Se eu soltar o botao de movimento, a animacao acontece e, assim que ele volta ao normal, tudo se normaliza.
Eu ja chequei e os códigos estão tudo OK. Se por acaso eu aperto o botão de movimento logo depois de ter sido atingido, por mais que o personagem nao se mova a animação acontece.
O problema acontece e persiste se eu continuar apertando o botao de movimento antes e depois de ser atingido, ou seja, o problema é que o botao de movimento está impedindo que a animacao de dano ocorra, se ele estiver pressionado, porém eu ja havia colocado uma variavel de controle para que, quando o dano aconteca (e a variavel de dano torna-se 1), um IF no botao de movimento impede que qualquer coisa aconteça, mas o simples fato de eu apertar o botao de movimento antes, esta travando tudo... não sei se deu para entender...
Eu queria saber se nao existe algum mecanismo para impedir que o key press interfira no evento animation end / any key / no key event...
Sou novo no fórum, espero que alguem tenha experiencia com esse tipo de problema hehe...
Abraços!
O jogo é plataforma e quando o inimigo me ataca, se eu estiver parado meu personagem sofre dano e a animação dele (tomando dano) é acionada.
Eu coloquei uma variavel de controle, para que quando ele seja atingido, ela torna-se 1 e, enquanto estiver 1, o personagem não pode se mover...
Pois bem, quando estou parado tudo funciona perfeitamente e eu não consigo mover meu personagem até que a animação de dano acabe.
Mas se por acaso eu estiver pressionando algum dos botões de movimento quando for atingido, meu personagem congela, e se eu apertar diversas vezes o botao de movimento, ele fica como se fosse em um loop, não deixando meu personagem se mover e nem acionar a animacao de dano.
Se eu soltar o botao de movimento, a animacao acontece e, assim que ele volta ao normal, tudo se normaliza.
Eu ja chequei e os códigos estão tudo OK. Se por acaso eu aperto o botão de movimento logo depois de ter sido atingido, por mais que o personagem nao se mova a animação acontece.
O problema acontece e persiste se eu continuar apertando o botao de movimento antes e depois de ser atingido, ou seja, o problema é que o botao de movimento está impedindo que a animacao de dano ocorra, se ele estiver pressionado, porém eu ja havia colocado uma variavel de controle para que, quando o dano aconteca (e a variavel de dano torna-se 1), um IF no botao de movimento impede que qualquer coisa aconteça, mas o simples fato de eu apertar o botao de movimento antes, esta travando tudo... não sei se deu para entender...
Eu queria saber se nao existe algum mecanismo para impedir que o key press interfira no evento animation end / any key / no key event...
Sou novo no fórum, espero que alguem tenha experiencia com esse tipo de problema hehe...
Abraços!
CassioCuri- Data de inscrição : 15/04/2010
Reputação : 0
Número de Mensagens : 6
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida urgente!!! Por favor me ajudem!
Amigo, como o seu projeto está completo e a engine está pronta vai ser um pouco dificil te ajudar, pois seu código deve esta bem complexo a essa altura.
Mais voce colocou mascara no seu char principal?
Muitas vezes esse travamento é devido a falta de mascara pois quando o sprite muda de forma ele pode mudar a colisão. Desligue o Precise Colision Check tambem.
Mais voce colocou mascara no seu char principal?
Muitas vezes esse travamento é devido a falta de mascara pois quando o sprite muda de forma ele pode mudar a colisão. Desligue o Precise Colision Check tambem.
Re: Dúvida urgente!!! Por favor me ajudem!
vinians escreveu:Amigo, como o seu projeto está completo e a engine está pronta vai ser um pouco dificil te ajudar, pois seu código deve esta bem complexo a essa altura.
Mais voce colocou mascara no seu char principal?
Muitas vezes esse travamento é devido a falta de mascara pois quando o sprite muda de forma ele pode mudar a colisão. Desligue o Precise Colision Check tambem.
Eu não sei usar máscara...
Mas o problema não é de colisão (apesar de isso estar enxendo o saco quando pulo em algumas plataformas e meu personagem trava...)
Eu tirei o precise colision check e o separate collision masks e dai ele considera meu personagem um grande quadrado... quando vou pular entre espaços curtos (mas do tamanho do personagem) ele não passa! isso me irrita...
Mas não é esse o problema, eu estou achando que é alguma mecânica do game maker que trava um evento quando eu aciono outro... =x
CassioCuri- Data de inscrição : 15/04/2010
Reputação : 0
Número de Mensagens : 6
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida urgente!!! Por favor me ajudem!
Para usar mascara, crie um sprite na forma mais parecida com o seu char e depois coloque na propriedade do objeto Mask.CassioCuri escreveu:
Eu não sei usar máscara...
Mas o problema não é de colisão (apesar de isso estar enxendo o saco quando pulo em algumas plataformas e meu personagem trava...)
Eu tirei o precise colision check e o separate collision masks e dai ele considera meu personagem um grande quadrado... quando vou pular entre espaços curtos (mas do tamanho do personagem) ele não passa! isso me irrita...
Mas não é esse o problema, eu estou achando que é alguma mecânica do game maker que trava um evento quando eu aciono outro... =x
Quanto a ele considerar como quadrado, voce pode ir reduzindo o quadro de bounding box até ficar bem pequeno, dai ele vai passar nos espaços mais curtos. Para fazer isso basta clicar em Mask la no sprite e depois seleciona Manual. Depois basta ajustar no quadro abaixo.
Eu desconheço essa "mecanica que trava" creio que não é isso. Provavelmente é um bug mesmo no seu codigo ou o esquema de mascara que eu te falei.
Re: Dúvida urgente!!! Por favor me ajudem!
vinians escreveu:Para usar mascara, crie um sprite na forma mais parecida com o seu char e depois coloque na propriedade do objeto Mask.CassioCuri escreveu:
Eu não sei usar máscara...
Mas o problema não é de colisão (apesar de isso estar enxendo o saco quando pulo em algumas plataformas e meu personagem trava...)
Eu tirei o precise colision check e o separate collision masks e dai ele considera meu personagem um grande quadrado... quando vou pular entre espaços curtos (mas do tamanho do personagem) ele não passa! isso me irrita...
Mas não é esse o problema, eu estou achando que é alguma mecânica do game maker que trava um evento quando eu aciono outro... =x
Quanto a ele considerar como quadrado, voce pode ir reduzindo o quadro de bounding box até ficar bem pequeno, dai ele vai passar nos espaços mais curtos. Para fazer isso basta clicar em Mask la no sprite e depois seleciona Manual. Depois basta ajustar no quadro abaixo.
Eu desconheço essa "mecanica que trava" creio que não é isso. Provavelmente é um bug mesmo no seu codigo ou o esquema de mascara que eu te falei.
Acho que essa máscara pode resolver o problema da colision então, mas por exemplo, o meu personagem tem uma animacao de ataque com uma espada, e eu trato todo seu corpo como colisao na hora de considerar onde está sendo causado o dano... a máscara não iria interferir nisso?
Vou dar uma olhada aqui para ver se aprendo mais sobre ela... se puder me explicar mais detalhadamente agradeço.
Grato pela ajuda!
CassioCuri- Data de inscrição : 15/04/2010
Reputação : 0
Número de Mensagens : 6
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida urgente!!! Por favor me ajudem!
Você disse que criou uma variável de controle que fica =1 quando leva dano e =0 quando termina o dano, então lá no evento que você faz para o movimento você tem que colocar uma condição para o movimento acontecer só se não tiver levando dano, se for no Evento Keyboard ou o que for, coloque:
Em " nome_variavel_dano " você troca pelo nome da sua variável de controle, então assim o objeto só vai se mover quando não estiver levando dano
- Código:
if nome_veriavel_dano=0
{
// Seu código de movimento
}
Em " nome_variavel_dano " você troca pelo nome da sua variável de controle, então assim o objeto só vai se mover quando não estiver levando dano
Denis Lemos- Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
- C#
- Godot
- C ou C++
Re: Dúvida urgente!!! Por favor me ajudem!
Denis Lemos escreveu:Você disse que criou uma variável de controle que fica =1 quando leva dano e =0 quando termina o dano, então lá no evento que você faz para o movimento você tem que colocar uma condição para o movimento acontecer só se não tiver levando dano, se for no Evento Keyboard ou o que for, coloque:
- Código:
if nome_veriavel_dano=0
{
// Seu código de movimento
}
Em " nome_variavel_dano " você troca pelo nome da sua variável de controle, então assim o objeto só vai se mover quando não estiver levando dano
Eu já fiz isso, já existe uma variável de controle... o personagem nao se movimenta, o que acontece é que a variavel que indica que ele tomou dano continua como 1, quando no Animation End (apos a animacao de dano acabar), ele seta de volta para 0.
Acontece que se eu estou andando e tomo o dano, a animacao nao ocorre porque o outro evento de andar (press key) está acionado, porém este evento só funciona se a variavel de dano estiver 0.
Ou seja, meu personagem toma dano a variavel isDamaged vai para 1
mas como o botao de walk estava pressionado, a animacao de damage nao acontece.
No botao de walk, todas as ações estao dentro de um if isDamaged == 0, então nada deveria acontecer se o botao está / estiver pressionado.
Mas o simples fato de eu apertar o botao faz com que a animacao nao ocorra...
a animacao de dano ocorre em dois eventos -> any key / no key events. Minha intenção era ativar a animação de dano independente de eu estar parado (no key) ou andando (any key) ou realizando qualquer outra ação. Mas não está funcioanndo porque eu acho que ele fica entrando no if do key press event quando o bota esta pressioando, mesmo que ele não vá realizar nada (pois o isDamaged está 1)...
ele fica verificando o if do Key press ao invés de realizar a animação de dano... acho que é isso que está acontecendo...
ou seja, o if impede que ele se mova, mas o simples fato do botao de andar estar sendo pressionado, durante o ataque, faz com que ele fique verificando o IF... e ai ele trava o personagem...
é meio complicado mas acho que é exatamente isso que ta acontecendo...
CassioCuri- Data de inscrição : 15/04/2010
Reputação : 0
Número de Mensagens : 6
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida urgente!!! Por favor me ajudem!
Então não é no movimento o problema, e sim onde você troca as sprite do objeto !
Mas seria melhor você colocar os principais código que usa para essas ações, senão não tem como adivinhar onde está o erro !
Mas seria melhor você colocar os principais código que usa para essas ações, senão não tem como adivinhar onde está o erro !
Denis Lemos- Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
- C#
- Godot
- C ou C++
Re: Dúvida urgente!!! Por favor me ajudem!
Denis Lemos escreveu:Então não é no movimento o problema, e sim onde você troca as sprite do objeto !
Mas seria melhor você colocar os principais código que usa para essas ações, senão não tem como adivinhar onde está o erro !
Como eu disse, não usei codigo no meu jogo, fiz atraves dos actions icons la...
Vou ver se envio mais tarde as fotos ou até mesmo o projeto, no momento esta corrido e acho que nao vai dar tempo de corrigir o bug... pois so tenho mais 1h e pouco para terminar... mas de noite eu passo com calma pois quero saber onde estou errando...
Ainda acho que nao é problema no sprite, pois o erro só ocorre enquanto estou andando, e quando tomo o dano é impossivel andar pois a variavel nao permite! Ele não deveria travar e sim acionar a animacao...
CassioCuri- Data de inscrição : 15/04/2010
Reputação : 0
Número de Mensagens : 6
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida urgente!!! Por favor me ajudem!
Intão ele ta correndo, toma dano, ele para, mas a animação correndo continua.
Se eu soltar o botão de correr, a animação correndo para e a animação de dano aparece, depois que ela acaba tudo volta ao "normal"?
Provavelmente é que você está deixando trocar sprite mesmo quando ele esta levando dano.
Verifique onde você fez para ele mudar para o sprite de correr, se você colocou um IF para não executar caso ele tenha levado dano.
Se eu soltar o botão de correr, a animação correndo para e a animação de dano aparece, depois que ela acaba tudo volta ao "normal"?
Provavelmente é que você está deixando trocar sprite mesmo quando ele esta levando dano.
Verifique onde você fez para ele mudar para o sprite de correr, se você colocou um IF para não executar caso ele tenha levado dano.
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Dúvida urgente!!! Por favor me ajudem!
Janx escreveu:Intão ele ta correndo, toma dano, ele para, mas a animação correndo continua.
Se eu soltar o botão de correr, a animação correndo para e a animação de dano aparece, depois que ela acaba tudo volta ao "normal"?
Provavelmente é que você está deixando trocar sprite mesmo quando ele esta levando dano.
Verifique onde você fez para ele mudar para o sprite de correr, se você colocou um IF para não executar caso ele tenha levado dano.
Eu criei dois eventos any key e no key para acontecerem independente do contexto do jogo.
A animação de damage ocorre nesses eventos:
if isDamage == 1
Dai ele ativa a animação de damage e da um endAnimation 1
o endAnimation 1 existe no evento Animation End e ele faz com que o jogador volte ao sprite parado.
Se eu não estou apertando a tecla A ou D (key press) que sao as teclas que eu uso para andar para esquerda e direita, respectivamente, quando o persoangem sofre o dano, o isDamage seta pra 1 e a animação no any key / no key event é ativada, assim como o endAnimation 1.
Acabando a animação de damage, no Animation End ele entra no if do endAnimation e faz o sprite voltar ao normal.
Isso com meu personagem parado.
Se eu estou andando e tomo o dano, o personagem trava.
Existe uma condição que engloba tudo no key press A e D, um if isDamaged = 0.
Ou seja, se ele nao está com dano, o personagem pode se mover, se nao, nada acontece.
Ou nada deveria acontecer....
Mas a animação do any key / no key não é ativada porque o key press está ativo... acho que é isso que acontece, mesmo que o if isDamaged seja FALSE...
estranho...
CassioCuri- Data de inscrição : 15/04/2010
Reputação : 0
Número de Mensagens : 6
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» uRGENTE ME AJUDEM
» Colisão, Ajudem Urgente !
» [URGENTE]Me Ajudem com erro do GM
» [Resolvido]Direções me ajudem urgente!!!!
» Urgente,vou sair da qui a pouco me ajudem?!
» Colisão, Ajudem Urgente !
» [URGENTE]Me Ajudem com erro do GM
» [Resolvido]Direções me ajudem urgente!!!!
» Urgente,vou sair da qui a pouco me ajudem?!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos