Download: https://www.mediafire.com/file/u9hbnn2njlsfe7u/RPG_Maker_-_Mirror_system.zip/file
Senha: rpgmaker
Parte 1: Preparando o cálculo
Nesta primeira parte mostrarei como fazer o evento do mapa ir para a mesma posição X do jogador, mas a posição Y será o inverso da posição Y do jogador usando a primeira posição do próprio reflexo como referência.
Se a coordenada Y inicial do reflexo for 6, esta será a base do próprio espelho e o valor será subtraído da coordenada Y do jogador para que ele se afaste da base.
(Na demo tem um mapa chamado "Mirror_OLD", nele você pode ver esse estágio pronto)
Parte 2: Movimento reflexo suave
Apesar de pouco conhecido, antigamente era comum usuários do Rm2k(3) utilizarem um sistema de lagarta feito por eventos, a lógica que utilizei foi a mesma, a reflexão ao invés de ser transferida para a coordenada seguirá como "Move event" até atingir a coordenada calculada com base na posição do jogador.
Info: a velocidade deve ser definida manualmente, para trabalhar com sistema de dash, que é o sistema de correr segurando uma tecla, serão necessários ajustes, provavelmente a criação de uma nova página com a velocidade maior
(Na demo o mapa "Mirror (Only Player)" tem o sistema completo funcionando)
Parte 3: Corrigindo o gráfico refletido
Neste ponto o sistema já está funcionando, mas fica a dúvida de como desenhar o gráfico espelhado, pois nem sempre os sprites terão os dois lados do corpo iguais, isso pode ser devido ao penteado, acessório no braço ou roupa, então é necessário redesenhar o gráfico invertido, não é necessário nenhum programa avançado para isso, utilizei o próprio MSPaint do Windows para isso, veja a lógica nesta imagem:
Parte 4: Últimos testes
Enquanto o sistema está funcionando neste ponto, é preciso ter cuidado com o limite de altura do espelho em termos de quão perto o jogador pode chegar da coordenada Y do topo do mapa. Se o reflexo não tiver para onde ir, o efeito no jogo será estranho. Os números no lado esquerdo da tela são usados para testar quaisquer melhores posições iniciais para a base do espelho, para que você possa entender melhor como todo o sistema funciona.
Parte 5: NPCs com reflexão (somente Rm2k3)
Para deixar o sistema mais prático fiz parte dele com Eventos Comuns , então para afetar os eventos do mapa que representam os reflexos dos NPCs usei o parâmetro "This Event" nos comandos que precisavam, mas isso não funciona no RPG Maker 2000, então para funcionar veja a próxima parte onde desfaço a parte dos eventos comuns e refaço diretamente em cada evento de reflexo .
Info: Embora intuitivo, isso não deve ser aplicado a objetos estáticos, como colunas, baús, etc. Para fazer isso, basta criar um evento reflexo na posição correspondente e o movimento de abertura é simplesmente sincronizado com o movimento do objeto real. Claro, é necessário criar um gráfico do mesmo ao contrário se o próprio objeto não puder representar isso.
(Veja o mapa "Mirror (NPCs)", com esse método é fácil criar mais NPCs com reflexos)
Parte 6: Convertendo para RPG Maker 2000
O parâmetro "This Event" funciona em Eventos Comuns quando chamado por um evento de mapa na versão 1.12a do Rm2k3, essa foi uma correção ou melhoria incluída que ajudou muito no desenvolvimento de sistemas baseados em eventos, possibilitando utilizar um Common Event como função em linguagens de programação, porém isso não funciona em versões anteriores e nem na versão mais recente do Rm2k, então para isso é necessário recriar cada um dos três Common Events nos eventos que representam os reflexos, separando-os por páginas para que possam ser chamados pelo próprio evento reflexo sem gerar conflitos, e assim podendo apagar os Common Events.
Parte 7: Controlando objetos estáticos
Este próximo passo é importante para deixar as animações do jogo mais realistas, mas neste caso não utilizaremos o sistema de reflexão espelhada, pois são objetos que permanecem parados na mesma coordenada do mapa.
Este é um método básico para sincronizar o reflexo com as animações de baús abrindo ou alavancas mudando de posição. O mesmo efeito pode ser aplicado a eventos de NPC que têm uma animação personalizada ao interagir com o jogador.
Um exemplo seria com monstros no mapa onde eles deveriam ter uma animação após serem derrotados.
Senha: rpgmaker
Parte 1: Preparando o cálculo
Nesta primeira parte mostrarei como fazer o evento do mapa ir para a mesma posição X do jogador, mas a posição Y será o inverso da posição Y do jogador usando a primeira posição do próprio reflexo como referência.
Se a coordenada Y inicial do reflexo for 6, esta será a base do próprio espelho e o valor será subtraído da coordenada Y do jogador para que ele se afaste da base.
(Na demo tem um mapa chamado "Mirror_OLD", nele você pode ver esse estágio pronto)
Parte 2: Movimento reflexo suave
Apesar de pouco conhecido, antigamente era comum usuários do Rm2k(3) utilizarem um sistema de lagarta feito por eventos, a lógica que utilizei foi a mesma, a reflexão ao invés de ser transferida para a coordenada seguirá como "Move event" até atingir a coordenada calculada com base na posição do jogador.
Info: a velocidade deve ser definida manualmente, para trabalhar com sistema de dash, que é o sistema de correr segurando uma tecla, serão necessários ajustes, provavelmente a criação de uma nova página com a velocidade maior
(Na demo o mapa "Mirror (Only Player)" tem o sistema completo funcionando)
Parte 3: Corrigindo o gráfico refletido
Neste ponto o sistema já está funcionando, mas fica a dúvida de como desenhar o gráfico espelhado, pois nem sempre os sprites terão os dois lados do corpo iguais, isso pode ser devido ao penteado, acessório no braço ou roupa, então é necessário redesenhar o gráfico invertido, não é necessário nenhum programa avançado para isso, utilizei o próprio MSPaint do Windows para isso, veja a lógica nesta imagem:
Parte 4: Últimos testes
Enquanto o sistema está funcionando neste ponto, é preciso ter cuidado com o limite de altura do espelho em termos de quão perto o jogador pode chegar da coordenada Y do topo do mapa. Se o reflexo não tiver para onde ir, o efeito no jogo será estranho. Os números no lado esquerdo da tela são usados para testar quaisquer melhores posições iniciais para a base do espelho, para que você possa entender melhor como todo o sistema funciona.
Parte 5: NPCs com reflexão (somente Rm2k3)
Para deixar o sistema mais prático fiz parte dele com Eventos Comuns , então para afetar os eventos do mapa que representam os reflexos dos NPCs usei o parâmetro "This Event" nos comandos que precisavam, mas isso não funciona no RPG Maker 2000, então para funcionar veja a próxima parte onde desfaço a parte dos eventos comuns e refaço diretamente em cada evento de reflexo .
Info: Embora intuitivo, isso não deve ser aplicado a objetos estáticos, como colunas, baús, etc. Para fazer isso, basta criar um evento reflexo na posição correspondente e o movimento de abertura é simplesmente sincronizado com o movimento do objeto real. Claro, é necessário criar um gráfico do mesmo ao contrário se o próprio objeto não puder representar isso.
(Veja o mapa "Mirror (NPCs)", com esse método é fácil criar mais NPCs com reflexos)
Parte 6: Convertendo para RPG Maker 2000
O parâmetro "This Event" funciona em Eventos Comuns quando chamado por um evento de mapa na versão 1.12a do Rm2k3, essa foi uma correção ou melhoria incluída que ajudou muito no desenvolvimento de sistemas baseados em eventos, possibilitando utilizar um Common Event como função em linguagens de programação, porém isso não funciona em versões anteriores e nem na versão mais recente do Rm2k, então para isso é necessário recriar cada um dos três Common Events nos eventos que representam os reflexos, separando-os por páginas para que possam ser chamados pelo próprio evento reflexo sem gerar conflitos, e assim podendo apagar os Common Events.
Parte 7: Controlando objetos estáticos
Este próximo passo é importante para deixar as animações do jogo mais realistas, mas neste caso não utilizaremos o sistema de reflexão espelhada, pois são objetos que permanecem parados na mesma coordenada do mapa.
Este é um método básico para sincronizar o reflexo com as animações de baús abrindo ou alavancas mudando de posição. O mesmo efeito pode ser aplicado a eventos de NPC que têm uma animação personalizada ao interagir com o jogador.
Um exemplo seria com monstros no mapa onde eles deveriam ter uma animação após serem derrotados.