🤔 Para Refletir :
"Está faltando "animação" no projeto? Use um "estimulante"!"
- Core32

Sistema de localização Player x Eventos

JulioRPGCriator

Cidadão
Membro
Membro
Juntou-se
17 de Fevereiro de 2017
Postagens
103
Bravecoins
0
Boa noite pessoal, eu estou com muita dificuldade na parte de ABS onde tenho que dar a localização do $gamePlayer.x e $gamePlayer.y em relação ao Evento $gameMap.events().x e $gameMap.events().y

estou usando a base "RPG_Objects"

apenas com o Input.isTriggered('ok') eu consigo apresenta resultado de dano, porem de qualquer area do mapa e isso tá feio!

para localizar um pouco o meio que estou tentando usar, eu fiz uma função onde:
Game_Event.prototype.isEnemy = function(){
return $dataMap.events[this._eventId].meta.enemy;
}
e dela fiz todo processo de call onde cheguei em:
this._eventEnemyId = Number($dataMap.events[eventId].meta.enemy);

que é onde a mágica começa aqui, dai consigo atribuir os valores do database de monstros a um evento qualquer no mapa colocando em note <enemy: ...> ...
mais ai que chega a duvida cruel, a parte da localização mencionada ali em cima...

eu precisava aprender como devo fazer isso, ja ate acho que perguntei antes sobre isso a outros mais acabei desistindo e fazendo o sistema por eventos acabou sendo mais trabalhoso porem facil...

alguem pode me ensinar de uma forma que eu não tenha mais duvida nisso nos meus projetos, talvez seja algo tão simples, mais realmente nao esta entrando na mente!
 
Acredito que deveria estar assim:

Javascript:
var _GameEventABS_updateSelfMovement = Game_Event.prototype.updateSelfMovement;

Game_Event.prototype.updateSelfMovement = function() {
    _GameEventABS_updateSelfMovement.call(this);
    
    if (!this.isEnemy()) {
        return;
    }

    if (this.isNearThePlayer()) {
        this.moveTowardPlayer();
    } else {
        this.moveRandom();
    }
}

Caso necessite de um pouco mais de afinamento do quão perto o evento tem que estar do jogador para começar a segui-lo, sugiro alterar a função isNearThePlayer:

Javascript:
var _GameEventABS_isNearThePlayer = Game_Event.prototype.isNearThePlayer;

Game_Event.prototype.isNearThePlayer = function() {
    if (!this.isEnemy()) {
        return _GameEventABS_isNearThePlayer.apply(this, arguments);
    }
    
    var sx = Math.abs(this.deltaXFrom($gamePlayer.x));
    var sy = Math.abs(this.deltaYFrom($gamePlayer.y));
    
    return sx + sy < 5;
};
 
desculpe a demora na resposta, tive uns trabalhos a fazer enfim...
nossa entendi, eu estava juntando as 2 funções tentando  fazer um resultado que so funciona separadamente...

pelo menos a minha ideia estava no rumo certo =D
"desta vez" hehe...

testei aqui e funcionou perfeitamente! Obrigado pela ajuda!
 
Voltar
Topo Inferior