PRESSIONAR TECLA DIRECIONAL PARA BAIXO

10 Respostas   225 Visualizações

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

herrmarcus

  • *
  • Posts: 20
  • Ouros: 0
  • Nunca tente, nunca erre.
Tópico criado em: 04/09/2017 às 09:55 - Última modificação por King Gerar em 05/09/2017 às 14:17

 Bom dia. Estou criando um projecto no RPG Maker VX Ace e não estou conseguindo fazer funcionar o comando do personagem ao apertar a tecla para baixo. É um jogo do Dragon Ball, e criei um evento comum para o personagem carregar o Ki ao pressionar a tecla X (B), mas quero impedi-lo de se mover ao estar segurando "X". Então criei a condição que caso ele aperte algum direccional irá cancelar o carregamento de ki. Mas, não deu certo usando o "Input.Trigger?". Por favor, auxiliem como posso escrever esse script com os direccionais.
 OBS: com a condição de evento "pressionar tecla" não funciona da maneira que deveria, pois o comando só abrange se você segurar a tecla e não apenas pressionar.

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 1: 04/09/2017 às 09:59

Dá uma conferida na sintaxe e vê se há algum erro se comparada à forma como tu escreveu:

Código: [Selecionar]
(Input.trigger?(:KEY))
Onde KEY deve ser substituída por UP, DOWN, LEFT ou RIGHT, em caixa alta e sem aspas.

herrmarcus

  • *
  • Posts: 20
  • Ouros: 0
  • Nunca tente, nunca erre.
Resposta 2: 04/09/2017 às 13:15

O comando parece estar certo, mas não funcionou como eu imaginei. Como pode ver na imagem e na tela de eventos, quando o personagem aperta X ele carrega o Ki, mas eu queria impedir ele de se mover enquanto está carregando, ou seja, enquanto está com o X pressionado. Mas, dessa forma que tentei não deu certo. Existe mais alguma forma de forma de fazer isso, para não permitir o personagem de se mover enquanto usa essa habilidade?

[Anexo excluído pelo administrador]

Corvo

Resposta 3: 04/09/2017 às 13:20

Mude o evento que "carrega o ki" de Processo Paralelo para Início Automático. Isso impedirá o jogador de agir enquanto o evento estiver sendo executado.

Syureri

Resposta 4: 04/09/2017 às 13:43

Input.trigger?(:Key) checa se uma tecla foi pressionada uma vez. Ou seja, se você apertou o botão.
Para checar se o jogador está segurando um botão, use Input.press?(:Key).

herrmarcus

  • *
  • Posts: 20
  • Ouros: 0
  • Nunca tente, nunca erre.
Resposta 5: 04/09/2017 às 14:08

Alisson, acho que esse "Input.press?(:Key)." funciona da mesma forma que o comando de evento "pressionar tecla", que verifica se você está segurando a tecla. E como pode ver na minha aba de eventos eu coloquei dessa maneira, mas não funciona como deveria. A carga de Ki só é cancelada quando você segura a tecla para baixo por mais de um tile. Isto é, o personagem se move por um quadrado em uma animação na qual ele deveria ficar parado.   :-/

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 6: 04/09/2017 às 14:30

Tenta montar assim:


herrmarcus

  • *
  • Posts: 20
  • Ouros: 0
  • Nunca tente, nunca erre.
Resposta 7: 05/09/2017 às 08:27

Corvo, a sua solução não deu muito certo, pois quando carrega o Ki o personagem não se movimenta (como deveria ser), mas os inimigos não se movimentam também;
King Gear, a sua solução impediu o personagem de se movimentar e manteve o movimento do inimigo, porém quando o inimigo encosta no personagem e causa dano ele consegue se mover, mesmo enquanto carrega o Ki (penso que pode ser porque o efeito quando o inimigo encosta é mover o personagem fazendo-o voltar um passo. Talvez isso quebre o sistema e permita ele se mover novamente). E também, quando aperto para carregar ele só aumenta 1 de ki, mesmo segurando a tecla, quando na verdade deveria ser um aumento constante enquanto ele segurasse a tecla.    :o:

Corvo

Resposta 8: 05/09/2017 às 08:38

Btw, essa é uma falha do RPG Maker que você terá de contornar: A) Durante um Processo Paralelo, todo mundo se move ou B) durante uma execução automática, ninguém se move. Soluções possivelmente trabalhosas:

A) Manter o evento em processo paralelo e criar "paredes" em torno do personagem. Isto é, em cada mapa, crie quatro eventos no nível do herói bloqueando sua passagem. Assim que o jogador começa a carregar, pegue as coordenadas do jogador e use-as como base para transferir estes eventos de modo que bloqueiem qualquer movimento. Um erro que já adianto: os inimigos não poderão tocar o jogador.

B) Criar essa animação na aba de animações do database, não pelos charsets. Organizá-la de modo que se sobreponha completamente ao personagem.

Enfim, se tudo falhar tente pedir por um script que realize esta função. Não sou programador, mas não me parece difícil.

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 9: 05/09/2017 às 08:42

[...] E também, quando aperto para carregar ele só aumenta 1 de ki, mesmo segurando a tecla, quando na verdade deveria ser um aumento constante enquanto ele segurasse a tecla.    :o:
Eu marquei as áreas onde programar o que acontece ao começar e ao parar de carregar, porém, esqueci de marcar onde programar as que acontecem enquanto carrega. Coloque este 'aumento de ki' ali antes do Esperar 1 frame e ele fará parte do ciclo, repetindo-se continuamente enquanto a tecla estiver pressionada.

Agora, quanto à interrupção do carregamento e o personagem se mover é meio complicado resolver. Isto pois, para travar o movimento do personagem, estou ordenando-o que espere um frame continuamente. Dando-o outra rota de movimento, esta na qual ele espera é sobrescrita e seu movimento não mais ficará travado. Uma opção para, caso não queira que ele seja interrompido, é ativar uma switch como 'Carregando' ao ele começar a carregar. Quando um inimigo atacar, verifique se a switch está ativa antes de mover o personagem e ao parar o carregamento, desative a swicth.

herrmarcus

  • *
  • Posts: 20
  • Ouros: 0
  • Nunca tente, nunca erre.
Resposta 10: 05/09/2017 às 13:57

Agora deu certo, King Gear. Muito obrigado pelas dicas. Funcionou perfeitamente. Grato.  XD