O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

PRESSIONAR TECLA DIRECIONAL PARA BAIXO

Iniciado por herrmarcus, 04/09/2017 às 09:55

04/09/2017 às 09:55 Última edição: 05/09/2017 às 14:17 por King Gerar
 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.

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

(Input.trigger?(:KEY))


Onde KEY deve ser substituída por UP, DOWN, LEFT ou RIGHT, em caixa alta e sem aspas.

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]

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.

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).

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.   :-/


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:

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.

Citação de: herrmarcus online 05/09/2017 às 08:27
[...] 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.

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