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

Como fazer coordenadas que calculam a partir da posição do evento?

Iniciado por mat_graz, 02/05/2020 às 14:29

Eu tô fazendo um sisteminha igual o de trainer NPC dos Pokémon, q se vc passa pra frente dele ele te interrompe e vai até vc batalhar.




No vídeo q eu assisti (do Zona RPG Maker), ele ensina a calcular a variável do Jogador a partir do mapa, como esta abaixo:





A questão é que isso funciona bem pro NPC que está parado numa posição fixa no mapa, no caso esse NPC está em (18, 5) e eu queria que ele enxergasse até 3 tiles a frente, então fiz as condições: 1) Variável NPC X = Jogador X ; 2) Jogador Y ≤ 8 (para passar depois de 3 tiles)  e por fim 3) Jogador Y > 5 (pra não desencadear quando passa por trás do NPC); aí sim desencadeia o switch para página 2 onde temos o evento da batalha.

Mas agora, eu queria saber se tem alguma forma de calcular esses  ≤ e >  sem que seja uma constante no mapa, queria calcular a partir do NPC, como se ele fosse o ponto (0,0). Seria algo tipo "Se o Jogador Y tiver uma diferença ≤ a 3 e seja > 0 do NPC Y, a batalha é desencadeada". Por que eu imagino q isso vai ser muito mais fácil de calcular se eu fizer esse NPC andando numa rota ou até mesmo fazendo movimentos aleatórios. Sera se isso é possivel?  :sera:

Espero que tenha feito sentido a explicação!



Você já tem quase toda a lógica aqui  :XD:
Spoiler
[close]

Você só precisaria fazer o seguinte, pega a variável da posição X e Y do evento, e subtrai com a X e Y do personagem, usando qualquer uma das 2 variáveis mesmo, quando fizer isso você vai ter a diferença da posição X e Y do evento da posição X e Y do personagem. Com isso é bem mais fácil fazer a sua lógica.

SE essa diferença no X tiver 0, significa que o personagem está na mesma coordenada X do evento, e ai se o Y for entre -3 e 3, significa que o personagem está 3 tiles de diferença do evento. Faz o mesmo para o Y e pronto, você tem controle total da distância que o personagem está do evento.

Citação de: Raizen online 02/05/2020 às 14:42

Você já tem quase toda a lógica aqui  :XD:
Spoiler
[close]

Você só precisaria fazer o seguinte, pega a variável da posição X e Y do evento, e subtrai com a X e Y do personagem, usando qualquer uma das 2 variáveis mesmo, quando fizer isso você vai ter a diferença da posição X e Y do evento da posição X e Y do personagem. Com isso é bem mais fácil fazer a sua lógica.

SE essa diferença no X tiver 0, significa que o personagem está na mesma coordenada X do evento, e ai se o Y for entre -3 e 3, significa que o personagem está 3 tiles de diferença do evento. Faz o mesmo para o Y e pronto, você tem controle total da distância que o personagem está do evento.


Acho que deu certo! :XD:

Eu não sei se foi exatamente isso q vc disse, eu entendi mais a parte de subtrair uma variavel com a outra, então eu falo pro jogo: ' quando Jogador X = NPC X ; subtraia Jogador Y por NPC Y e se o resultado for ≤ a 3 e > que 0, ele desencadeie a luta". Eu arrastei o evento em outras posições no mapa e tá rolando, pelo menos com a face dele virada pra baixo, acho que quando ele vira pros outros lados tem que refazer esse processo né?



E uma duvida que surgiu: quando eu subtraio essas váriaveis eu tenho que depois botar o comando de controlar variavel = Mapa Y pra fazer elas voltarem a ler a posição do Jogador/NPC no mapa? Pq a gente deixou elas subtraídas né, aí o proximo calculo imagino que vai dar bug...


[EDIT] Ja achei um erro: se eu coloco 2 desses eventos no mapa, quando eu passo na zona de desendear a batalha, o jogo congela, o personagem nao anda e nao acontecem os eventos  :T.T: