Andando no Gelo
Autor: Dr.XGB
Plataforma: RPG Maker 2000
Nível: Intermediário
Outro Motor: Destiny Patcher 2.0
Lista de Switches, Variáveis e Eventos Comuns:
Switch:
Variável:
Eventos Comuns:
Etapa 1: Verificando Id do Terreno
0001: Check Terrain
Processo Paralelo
(sem switch)
A primeira coisa que devemos fazer é verificar os terrenos de acordo com a posição do Herói no mapa. Isso você pode fazer simplesmente com eventos. Primeiro você usará as duas primeiras variáveis que retornarão a coordenada X e Y, respectivamente, do herói no mapa; em seguida, usar o comando Set Terrain ID..., baseando-se nas coordenadas retornando para a terceira variável, que indicará a Id do Terreno cujo o herói se encontra:
<> Variable Ch:[0001: Hero X] Set, Hero X Pos <> Variable Ch:[0002: Hero Y] Set, Hero Y Pos <> Set Terrain's ID: (V[0001],V[0002]), [0003: Hero Terrain] <>
Ou então podemos fazê-lo com Destiny Script, dispensando o uso das duas primeiras variáveis, utilizando as coordenadas dadas através do objetoEvent[HERO]:
Etapa 2: Hora de deslizar!
0002: Slidin' On Ice
Processo Paralelo
(sem switch)
Agora que já criamos a verificação de terreno no primeiro Evento Comum, vamos fazer com que o herói comece a deslizar no piso quando estiver sobre o gelo ou num piso escorregadio qualquer. Mas antes, precisamos criar este tal terreno.
Depois disso, crie uma condição onde a variável [0003: Hero Terrain] tenha o valor 11, marque a opção ELSE Case e ative a única switch utilizada neste sistema.
Agora vem a parte feita pelo Destiny Script. Você precisa pensar primeiro que, quando o herói estiver sobre este piso, ele vai deslizar, mesmo que ele tente mudar de direção e mesmo se ele não estiver mais andando. Para isso, teremos que deixar o movimento do herói fixo:
Depois disso, faremos uma verificação com as 4 teclas direcionais, fazendo com que o movimento seja reiniciado e alterar a direção do herói sem alterar o movimento, causando a impressão de quele está escorregando. Além disso, vamos armazenar o movimento do herói em uma variável, aproveitando as constantes dadas para determinar o movimento do herói de acordo com o comando Move Event...:
Você pôde notar acima que a variável [0004: Hero Movement] foi retornada com a constante que usamos para executar o método MoveEvent()do objeto Command. Quando esta variável está com o valor -1, significa que o herói está parado e já não está mais deslizando.
Também temos a variável [0005: Hero Friction] que sempre será zerada quando o herói conseguir se mover no gelo. O método GoToLabel()serve para pular para a linha onde estará a Label 1 que ainda não foi criada, mas serve precisamente para que o jogador não misture os comandos caso aperte mais de uma tecla ao mesmo tempo.
Aplique este código para as outras direções, adaptando as constantes e direções de acordo com as teclas.
Logo após, chame o comando Label por eventos e marque o valor 1. Sempre que o jogador apertar uma tecla, o código pulará diretamente a partir deste ponto, para então executarmos os métodos MoveEvent() e o MoveAll(), com a variável retornada ao apertar as teclas:
Se você testar o jogo agora, verá que o herói sairá escorregando até atingir uma área que o herói não consegue passar. Isso quer dizer que a ideia funcionou e precisamos terminar deixando um efeito mais interessante no qual a velocidade do herói vai diminuindo aos poucos até parar, envolvendo velocidade e fricção. O valor da fricção vai aumentando e terá um limite, se atingir este limite a velocidade do herói abaixará e esta variável voltará a zero, recomeçando a contagem:
Para finalizar o sistema, temos que fazer com que o herói retome os seus movimentos normais caso ele saia do piso de gelo. Por isso criamos aquela condição por eventos com a opção ELSE marcada. É para lá que nós vamos agora, colocando a velocidade normal de volta, a animação de movimento e tirar o movimentos fixo:
Não se esqueça também de colocar a variável que estava movendo o herói para o valor padrão novamente e desativar a switch que estava o fazendo escorregar.
<> Variable Ch: [0004: Hero Movement] Set, -1 <> Change Switch: [0001: Slidin' On Ice] - OFF Set <>
0003: Slidin' On Ice
Auto Start
[0001: Slidin' On Ice]
Este evento comum serve para que você não possa mover o herói enquanto ele estiver escorregando no piso de gelo. Aqui você pode aproveitar para usar como comandos de interação com eventos e abrir o menu, já que o auto Start não permite isso enquanto ele estiver acontecendo. Para evitar lag, colocamos um Wait de 0.0 nele:
<>Wait: 0.0 sec <>
O resultado é este quando tudo dá certo nos comandos:
http://www.youtube.com/watch?v=fLhUacdEFCE
Espero que tenham gostado deste tutorial e que possa lhe servir como uma ideia a mais caso você queira trabalhar numa jogabilidade variada. Não deixe de baixar a demonstração para ver com mais detalhes todo o código.
Até mais!