Forums » RPG MAKER 2K e 2003

Tutorial - Atirando em monstros no mapa

    • 683 posts
    13 de maio de 2015 15:00:41 ART

    OBJETIVO

    Citar

    Criar um evento projétil (flechas, magias, lanças, etc) que parte das coordenadas exatas do Herói,  quando um botão é pressionado, e que ocasionalmente poderá colidir com outro evento no mapa que geralmente monstros, NPCS ou quem sabe alavancas "inalcançaveis" Usem sua imaginação.


    Este tutorial é um pouco complexo, explicarei todos os detalhes passo a passo,  se tiverem paciência para ler, farão um bom proveito dele.

    Vocês vão mexer com: 

    • 10 Variáveis Diferentes
    • 3 Switchs Diferentes

     

    Citar

    1º Passo - O EVENTO COMUM


    Criar um evento comum,  em processo paralelo.

    • 1. Neste evento vá em Definir teclas adicionais, nele separe uma Variável com nome APERTOU TECLA especialmente para reconhecer o botão que deverá ser pressionado pra que o objeto seja lançado.
    • 2. Após isso Crie uma Condição IF (Fork) .. SE o botão que você escolheu por exemplo foi o SHIFT,  coloque lá APERTOU TECLA setar Igual a 7 (Código específico do rpg maker). SEM exceção possível.
    • 3. (Opcional)  A menos que você seja um fã de Tibia, Aqui você deve querer fazer alguma animação do herói, seja apontando uma arma para frente, ou gesticulando uma magia. Dá mais realismo ao seu jogo.
    • 4. Separe e ative um Switch ON , nesse tutorial vamos chamá-lo de SWITCH DO TIRO, esse switch é necessário para autorizar o movimento do Objeto - Este, um evento que estará presente em todos mapas onde a ação de atirar será possível, falaremos sobre isso depois.
    • 5. Esperar = 0.5sg, ou o tempo que você achar necessário pra um intervalo entre um disparo e outro.
    • 6. (Opcional II) Se você fez alguma animação do seu personagem lançando o objeto, aqui é a parte em que você retoma o movimento original dele"
    • * Se você fez a animação com charsets, após o tempo de espera, coloque Mudar Charset de Herói, e escolha o charset original que ele usava antes da animação acontecer.
    • ** Se você fez por animação de batalha, provavelmente você deve ter deixado o seu personagem translúcido, então é nessa hora que você vai deixa-lo Sem transparência

     

    Citar

    2º PASSO - UM MONSTRO


    Crie no mapa um evento qualquer, chamado Monstro, o comportamento deste evento fica a critério de vocês.

    Citar

    3º PASSO - EVENTO PROJÉTIL (PARTE I)


    Apenas crie no mapa um evento qualquer, em processo paralelo sem charset, com nome Objeto . 

    • 1. Na primeira página deixe o objeto fazendo o movimento em rota  Escorregar (Iniciar), e marque  Repetir Operação
    • 2. Na segunda página em condições do evento marque-o com o switch SWITCH DO TIRO (Aquele que se ativa no EVENTO COMUM, Lembram?)


    Deixe os comandos de evento vazios, e preencheremos a esta página logo mais.

    Obs: Este evento deve estar presente em todos os mapas onde a ação do disparo do objeto é autorizada no seu jogo.

    Citar

    4º Passo - O EVENTO GPS


    Crie no mapa, um evento qualquer, sem charset, em processo paralelo.
    Este evento é muito importante. Serve pra calcular as coordenadas X e Y,  do herói, do monstro, do objeto, e do percurso desse objeto.  Este evento também deve estar presente em todos os mapas onde a ação do disparo do objeto será possível,  É simples de se programar, mais uma pequena falha pode fazer com que a nossa meta não seja alcançada.

    • 1. Separe 8 variáveis, sugestão de nomes: HEROI XHEROI YMONSTRO XMONSTRO YPROJÉTIL X, PROJÉTIL YPERCURSO X, ePERCURSO Y.
    • 2. No roteiro do evento Instale as variáveis seguintes:
    • HEROI XSetar >Herói > Coordenada X
    • HEROI YSetar >Herói > Coordenada Y
    • MONSTRO XSetar >Monstro > Coordenada X
    • MONSTRO YSetar >Monstro > Coordenada Y
    • PROJETIL XSetar >Objeto > Coordenada X
    • PROJETIL YSetar >Objeto > Coordenada Y
    • PERCURSO XSetar >Objeto > Cena X
    • PERCURSO YSetar >Objeto > Cena Y

     

    Citar

    5º PASSO - O EVENTO DE COLISÃO


    Crie um evento no mapa, em processo paralelo. Este evento deve estar em todos os mapas onde exista monstros. E terá a função de registrar a reação do Monstro quando for atingido pelo Objeto. .
    - Marque que pra o evento acontecer, ele precisa estar com um switch ON chamado  LANÇOU OBJETO (Crie esse switch)

    • 1. Criar 2 Condições IF (Fork) instrínsecas (Uma dentro da outra) com igualdade de variáveis, assim faça o seguinte caso:
    • Quando a variável PROJETIL X for igual a variável MONSTRO X
      - E nessa condição a variável PROJETIL Y for igual a variável MONSTRO Y
      Mudar Switch ON - ACERTOU MONSTRO (Criar esse switch, vai ser importante mais tarde) 
      - Flash em Personagem > Monstro


    É nessa parte que você reproduz efeitos sonoros, ou faz o monstro se afastar com o impacto.. Subtrai alguma variável de HP do monstro ou algo do tipo, novamente esses detalhes fica a critério de vocês.  Fim do evento. 

    Citar

    6º PASSO - O EVENTO PROJÉTIL (PARTE II)


    É aqui que vamos preencher o roteiro da segunda página do evento chamado Objeto

    • 1. Como ja disse antes, a condição pra que essa página do evento exista, é que o  SWITCH DO TIRO esteja ON, agora no script de comandos coloque Mudar local de eventosEste evento (Objeto)> Por variável >  Coord X: HEROI X,  Coord Y: HEROI Y.

    Depois disso coloque Mudar Switch LANÇOU OBJETO - ON

    • 2. Agora Vamos dizer pra que lado aponta o objeto, baseado na direção em que o personagem está olhando. 
      Separe uma Variável, com nome DIREÇAO DO PROJETIL
    • 3. Agora você vai criar 4 Condições IF (Fork), SEM exceções possíveis, baseadas nas 4 direções em que o personagem pode olhar (Acima, Abaixo, Direita, Esquerda)
    • Quando o Herói estiver olhando  pra cima:
      - Mover evento >Este evento (Objeto)Olhar Para CimaMudar Gráfico (Aqui o objeto deixar de ser invisível e ganhar um charset específico)
      - Setar VariávelDIREÇAO DO PROJETIL igual a 1
      - Ir para Label Nº 1 (Falarei sobre isso depois)
    • Quando Herói olhando pra baixo:
      - Mover evento >Este evento (Objeto)Olhar Para BaixoMudar Gráfico
      - Setar VariávelDIREÇAO DO PROJETIL igual a 2
      - Ir para Label Nº 1
    • Quando Herói olhando pra direita:
      - Mover evento >Este evento (Objeto)Olhar Para DireitaMudar Gráfico
      - Setar VariávelDIREÇAO DO PROJETIL igual a 3
      - Ir para Label Nº 1
    • Quando Herói olhando pra esquerda:
      - Mover evento >Este evento (Objeto)Olhar Para EsquerdaMudar Gráfico
      - Setar VariávelDIREÇAO DO PROJETIL igual a 4
      - Ir para Label Nº 1

     
    Agora que ja definimos os valores das variáveis que corresponde a cada direção, vamos pular para a parte em que o objeto se movimenta para frente. A Label de número 1!

    • 4. No proximo comando (Independente das condições IF acima), va em Definir Label, e digite 1
    • 5. Esperar = 0.1sg (Para reduzir o Lag)
    • 6. Agora você vai criar 4 Condições IF (Fork) baseadas nos 4 valores da Variável DIREÇAO DO PROJETIL:
    • Quando DIREÇAO DO PROJETIL for igual a 1
      - Mover evento >Este evento (Objeto)Passo Acima.  [X] Repetir Operação. [X] Ignorar se não puder mover
    • Quando DIREÇAO DO PROJETIL for igual a 2
      - Mover evento >Este evento (Objeto)Passo Abaixo.  [X] Repetir Operação. [X] Ignorar se não puder mover
    • Quando DIREÇAO DO PROJETIL for igual a 3
      - Mover evento >Este evento (Objeto)Passo Direita.  [X] Repetir Operação. [X] Ignorar se não puder mover
    • Quando DIREÇAO DO PROJETIL for igual a 4
      - Mover evento >Este evento (Objeto)Passo Esquerda.  [X] Repetir Operação. [X] Ignorar se não puder mover


    Objeto vai se mover numa mesma direção, até que ele entre em colisão com o monstro.

    • 7. Acertando o monstro! Lá embaixo Crie 5  Condições If (Fork) independentes, Sem exceções, para o seguinte caso: 
    • Quando o switch ACERTOU MONSTRO estiver ON
    • Quando a variável PERCURSO X for igual ou abaixo de 16
    • Quando a variável PERCURSO Y for igual ou abaixo de 16
    • Quando a variável PERCURSO X for igual ou ACIMA de 304
    • Quando a variável PERCURSO Y for igual ou ACIMA de 240


    Para todos os casos você deverá copiar e colar o seguinte roteiro:

    - Mudar Switch OFF - LANÇOU OBJETO  (Por que? porque o tiro ja foi dado)
    - Mudar Switch OFF ACERTOU MONSTRO (Este comando só é necessário no primeiro caso)
    - Mover evento >Este evento (Objeto)Mudar Gráfico (Ficar invisível), Movimento Mais Veloz
    - Esperar = 0.1sg
    - Ir para Label Nº 2  (Fim do ciclo)

    Obs: Se o Objeto for um Bumerangue, por exemplo. Não será necessário que você faça ele ficar invisível, assim as pessoas poderão observar ele voltando pra o ponto de origem após o impacto. (Como um bumerangue mesmo!) 
    Bom, agora se o objeto não colidiu com o monstro, nem sumiu no canto da tela, significa que ele não participou de nenhum dos casos acima. No fim do caso Faça com que o evento reavalie as direções do personagem novamente:  

    • 8. Vá em Ir à label escolhido e digite 1

    (O evento terá q voltar para o ítem "4." Se nao participar das Condições IF)
     

    • 9. Definir label de Nº 2
    • 10. Esperar = 0.0sg

    (Pra evitar lag)

    • 11. Finalmente crie as últimas 5 Condições IF (Fork) para os casos particulares:
    • Quando a variável HEROI X for menor que variável PROJETIL X
      - Mover evento >Este evento (Objeto)Passo Esquerda.
    • Quando a variável HEROI X for maior que variável PROJETIL X
      - Mover evento >Este evento (Objeto)Passo Direita.
    • Quando a variável HEROI Y for menor que variável PROJETIL Y
      - Mover evento >Este evento (Objeto)Passo Acima.
    • Quando a variável HEROI Y for maior que variável PROJETIL Y
      - Mover evento >Este evento (Objeto)Passo Abaixo.
    • Quando a variável HEROI X for igual a variável PROJETIL X
      - E nessa condição (outra dentro) a variável HEROI Y for igual a variável PROJETIL Y
      - Mudar Switch OFF - SWITCH DO TIRO
      - Ir para Label 3 (O fim de toda a trajetória)


    Agora no final, do lado de fora das Condições, é necessário um acabamento para o caso de o objeto ainda não ter voltado ao ponto de origem a tempo:

    • 12. Ir para label Nº 2 (Se não voltou ainda, o evento retorna pra o ítem "9." para ser re-ajustado)

     

    • 13. Definir Label Nº 3 (Se voltou, Ou seja, quando as coordenadas X e Y da variavel PROJETIL for iguais as do HEROI, o evento acaba aqui. Esperando a tecla ser pressionada novamente)



    Espero que tenham gostado, demorei bastante pra pensar e escrever! Haha
    Só espero que alguem leia =(
    Grande Abraço!