Sistema por Eventos - Bola de Fogo

4 Respostas   358 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Nick Rock

  • *
  • Posts: 37
  • Ouros: 3
Tópico criado em: 10/12/2014 às 18:22

No meu projeto eu meio que fiz um sistema onde quando se aperta a tecla S, o jogador solta uma bola de fogo.
Até aí tudo bem, quando se aperta S o Evento "Bola de Fogo" se posiciona onde o herói está e anda na direção imposta. Mas percebi que quando jogador corre, a bola de fogo as vezes fica empacada no jogador, ela acaba se posicionando atras dele e nao consegue se mover. Então eu queria fazer com que a bola de fogo só saísse se o personagem estivesse parado. Como faço isso?

Obs: Minha solução foi fazer uma série de condições com Input.press?(:RIGHT),(:LEFT) e etc mas achei que ficou muito grande. Tem um jeito melhor de fazer isso?

Shiroyasha

  • *
  • Posts: 277
  • Ouros: 342
  • Viajando por aí.
  • Medalhas Participantes do Maps Together 2
Resposta 1: 10/12/2014 às 19:02

Sim, é possível. No caso você quer verificar se o jogador está parado, não é?
Crie uma condição e usando a opção "Script" presente na última aba coloque:

Código: [Selecionar]
!$game_player.moving?
Dentro desta condição execute os comandos para lançar a bola de fogo.

o/

Nick Rock

  • *
  • Posts: 37
  • Ouros: 3
Resposta 2: 10/12/2014 às 21:06

Sim, é possível. No caso você quer verificar se o jogador está parado, não é?
Crie uma condição e usando a opção "Script" presente na última aba coloque:

Código: [Selecionar]
!$game_player.moving?
Dentro desta condição execute os comandos para lançar a bola de fogo.

o/

Isso, perfeito ! Obrigado

Van

  • *
  • Posts: 133
  • Ouros: 82
  • Não digas nada: Sê!
Resposta 3: 10/12/2014 às 23:35 - Última modificação por Van em 10/12/2014 às 23:36

Não entendi muito bem. Essa condição só vai verificar se o jogador está se movendo, certo? não vai deixar de travar a bola de fogo.



Edit: Deixa, eu acabei de ler direito o tópico. Mas seria bom uma forma de deixar ele lançar a bola de fogo se movendo.

Por que não faz uma condição que aumenta a variável da coordenada X do projétil em 1 se ele estiver se movendo pra direita e reduz em 1 se for pra esquerda?

Não sei se funciona, acabei de pensar nisso.
Blog com meus textos, poemas e inspirações.
Basicamente onde eu devolvo pra vida todos os tapas que ela me dá.


Shiroyasha

  • *
  • Posts: 277
  • Ouros: 342
  • Viajando por aí.
  • Medalhas Participantes do Maps Together 2
Resposta 4: 11/12/2014 às 01:42

Imagino que funcione sim, Van. Ele também teria que programar o projétil para cima e para baixo. O único problema dessa abordagem é que a distância entre o player e o projétil num primeiro momento de lançamento vai variar um pouco. Isto é, enquanto em alguns pontos o projétil será disparado colado ao jogador em outros ele irá aparecer um pouco mais a frente.

Uma forma de contornar isso seria fazer o projétil estar sempre acompanhando o movimento do jogador abaixo do mesmo ao invés de apenas mudá-lo de lugar ao ativar a tecla. Isso na teoria.  :será:

PS: Se for inserir uma exceção nessa condição para tratar do movimento recomendo usar "$game_player.moving?" sem o "!". Só por uma boa prática de programação e lógica.

o/