こんばんは。
いつもお世話になっております。
本日はトリアコンタンさんの制作したHalfMove.jsについて質問があります。
プラグインの設定で変更している部分は
コード:
・8方向モードにしている
・半歩移動はOFFにしている
だけです。
このとき、イベントを対象としてmoveTowardCharacter()を実行すると、稀にイベントが動きません。
「稀に」を詳しく調べたところ「イベントがプレイヤーを真っ直ぐに追従する必要があるとき」にこの現象が発生するようでした。
コードを見たところ、
「moveTowardCharacterを実行したとき」
「イベントがプレイヤー(あるいは他のイベントでも)を真っ直ぐに追従する必要があるとき」
「Math.randomInt(4) === 0が満たされないとき」
「isDiagonalDirectionが満たされないため」
「イベントはmoveTowardCharacterしない」
ということになっているようでした(コードを見た感じmoveAwayFromCharacterでも同じようなことが起きると思われます)。
moveTowardCharacterを実行したときは必ず1マス進んで欲しかったため、HalfMove.js内のmoveTowardCharacterを以下のように調整してみました。
PHP:
var _Game_Character_moveTowardCharacter = Game_Character.prototype.moveTowardCharacter;
Game_Character.prototype.moveTowardCharacter = function(character) {
if (!this.canDiagonalMove() || Math.randomInt(4) === 0) {
_Game_Character_moveTowardCharacter.apply(this, arguments);
return;
}
var direction = this.getDiagonalTowardDirection(character.x, character.y);
if (this.isDiagonalDirection(direction)) {
this.executeDiagonalMove(direction);
}else {
_Game_Character_moveTowardCharacter.apply(this, arguments);
}
};
変更したのはコードの最後の方で、isMovementSucceeded()で判定することなく、それまでにmoveされていなければ必ず動かすようにしました。
これは何か動作に不具合が発生しそうでしょうか?
お手数ですが、ご回答いただけましたら幸いです。
よろしくお願いいたします。