Sistema de Colisão utilizando o ARC Engine

Introdução:
Primeiro tenha em mente que este tutorial é especialmente voltado às pessoas que necessitam desse sistema e que utilizam o sistema de plataforma do Khas (Arc Engine) portanto não garanto que esta 'façanha' dê certo em outras ocasiões. Aviso dado.


Eu posso me lembrar de quantas pessoas que já vieram me perguntar como eu criei um sistema de colisão nos eventos, utilizando o script de plataforma do Khas, graças ao meu projeto: O sequestro dos Tiny Toons.
Infelizmente na época era 'segredo', mas hoje resolvi abrir o jogo (literalmente)
Segue o tutorial:

Mas afinal para que serve este bendito tutorial?

O Arc engine é fantástico! Simula uma engine de plataforma no ACE quase que perfeitamente, mas há um problema!
Os eventos não identificam o personagem! Como assim?
Vamos imaginar que você crie um inimigo. Programa todos os comandos que você desejar para causar danos no personagem, caso este dê de cara com o inimigo em questão, porém, no sistema de plataforma do Khas, mesmo se você colidir com o evento configurado, nada acontecerá! É como se o personagem fosse 'invisível' para o evento.
Mas que graça teria um jogo de plataforma sem inimigos que nos causem danos? É aí que eu quero chegar!
Com um esquema de códigos mágicos, vulgo RGSS3, e uns comandos de eventos... Seus problemas acabarão! O personagem não será mais um ''gasparzinho'' para os eventos.
Vamos lá?

Finalmente... O tutorial:

Sabemos que precisamos de RGSS3 para a mágica acontecer, então abra seu editor de scripts e adicione abaixo do sistema ARC Engine esses dois scripts:

class Game_Character
attr_accessor :ax
attr_accessor :ay
end

-------------------------------------------------------------------------------------------------------------------------------------------

class Game_Interpreter
  def this_id
    return @event_id.to_i
  end
  def colisao(obstaculo=@event_id,objeto=@event_id,tipo = 0)
    obstaculo == 0 ? obst = $game_player : obst = $game_map.events[obstaculo]
    objeto == 0 ? objt = $game_player : objt = $game_map.events[objeto]
    if (obst.ax - objt.ax).abs <= 32 and (obst.ay - objt.ay).abs <= 32
      return true
    else
      return false
    end
  end

end

---------------------------------------------------------------------------------------------------------------------------------------------------

*Este último script foi originalmente desenvolvido pelo João Neto, mas refeito e convertido pelo Thiago_d_d

Agora crie seu evento no mapa, deixe-o em processo paralelo e adicione um comando de condições.
No comando de condições marque a opção ''script'' e coloque isso aqui:  colisao(0,?,1)
No lugar da interrogação, você coloca o número da ID do evento que você quer colidir. Não mexa em mais nada!
Feito isto, dentro da condição crie os comandos de danos no personagem se for um inimigo, ou os comandos que você desejar para a colisão.
Pode escrever só para testes apenas um ''Oi'':




Dê ok, teste o projeto e colida com o evento! Mágico, não? Pode chorar de alegria agora.
E é só isso, amiguinhos! O único trabalho que você terá é ficar verificando as IDs dos eventos do script de colisão nas condições.

Créditos:
MayLeone: Pelo tutorial, pela disposição de revelar seu valioso segredo e por implorar para o Thiago arrumar esse bug;
Thiago_d_d: Não fez nada de mais, apenas o código principal para o script;
João Neto: Pelo script de colisão;
E à todos os curiosos que vieram me perguntar sobre isso! Parabéns, se vocês não tivessem me enchido o saco com isso sempre, eu nunca teria dito.
Brincadeiras à parte... É isso.

0 comentários:

Postar um comentário

 
Depósito de Sistemas&Tutoriais © 2013 | Plantilla diseñada por Ciudad Blogger