Dúvida urgente!!! Por favor me ajudem!

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

Dúvida urgente!!! Por favor me ajudem!

Mensagem por CassioCuri em Qui 15 Abr 2010, 00:59

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!

CassioCuri

Número de Mensagens : 6
Idade : 27
Data de inscrição : 15/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por vinians em Qui 15 Abr 2010, 09:36

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.

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por CassioCuri em Qui 15 Abr 2010, 11:09

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

Número de Mensagens : 6
Idade : 27
Data de inscrição : 15/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por vinians em Qui 15 Abr 2010, 13:05

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
Para usar mascara, crie um sprite na forma mais parecida com o seu char e depois coloque na propriedade do objeto Mask.

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.

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por CassioCuri em Qui 15 Abr 2010, 13:31

vinians escreveu:
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
Para usar mascara, crie um sprite na forma mais parecida com o seu char e depois coloque na propriedade do objeto Mask.

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

Número de Mensagens : 6
Idade : 27
Data de inscrição : 15/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por Denis Lemos em Qui 15 Abr 2010, 13:35

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

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por CassioCuri em Qui 15 Abr 2010, 13:45

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

Número de Mensagens : 6
Idade : 27
Data de inscrição : 15/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por Denis Lemos em Qui 15 Abr 2010, 14:04

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 !

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por CassioCuri em Qui 15 Abr 2010, 15:42

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

Número de Mensagens : 6
Idade : 27
Data de inscrição : 15/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por Janx em Sex 16 Abr 2010, 14:05

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.

Janx

Número de Mensagens : 2417
Idade : 23
Data de inscrição : 24/05/2008
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por CassioCuri em Sex 16 Abr 2010, 14:11

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

Número de Mensagens : 6
Idade : 27
Data de inscrição : 15/04/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida urgente!!! Por favor me ajudem!

Mensagem por Conteúdo patrocinado Hoje à(s) 06:05


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