Название плагина: Движение к герою/от героя по диагонали
Автор: Yuryol
Версия: крайняя
Поддерживаемые языки: Русский
Описание: Простенький плагин, позволяющий двигаться событиям к герою/от героя по диагонали.
В некоторых плагинах движения по диагонали, события при указании движения "к герою" или "от героя" все-равно ходят по прямой, игнорируя диагональное движение. Данный плагин это исправляет.
Скриншоты: не требуются
Плагин скачать по
ссылке
либо скопировать в блокнот, назвать Yuryol_Move_Toward.js:
//=============================================================================
// Yuryol_Move_Toward.js
//=============================================================================
/*:
* @plugindesc Движение к герою/от героя по диагонали / Move 'toward'/'away from' Character
* @author Yuryol
@help
* Yuryol move 'toward'/'away from' Character (Движение к герою/от героя по диагонали)
* ----------------------------------------------------------------------------
* Плагин позволяет двигаться событиям к герою/от героя по диагонали.
* ----------------------------------------------------------------------------
* Спасибо ДК, Dmy, Caveman
* ----------------------------------------------------------------------------
*
*/
(function() {
var YuryolMoveTowardCharacter = Game_Character.prototype.moveTowardCharacter;
Game_Character.prototype.moveTowardCharacter = function(character) {
var sx = this.deltaXFrom(character.x);
var sy = this.deltaYFrom(character.y);
if (sx != 0 && sy !=0) {
(sx > 0 && sy > 0) ? this.moveDiagonally(4,8):
(sx > 0 && sy < 0) ? this.moveDiagonally(4,2):
(sx < 0 && sy > 0) ? this.moveDiagonally(6,8):
this.moveDiagonally(6,2);
}
else if (Math.abs(sx) > Math.abs(sy)) {
this.moveStraight(sx > 0 ? 4 : 6);
if (!this.isMovementSucceeded() && sy !== 0) {
this.moveStraight(sy > 0 ? 8 : 2);
}
} else if (sy !== 0) {
this.moveStraight(sy > 0 ? 8 : 2);
if (!this.isMovementSucceeded() && sx !== 0) {
this.moveStraight(sx > 0 ? 4 : 6);
}
}
};
var YuryolMoveAwayFromCharacter = Game_Character.prototype.moveAwayFromCharacter;
Game_Character.prototype.moveAwayFromCharacter = function(character) {
var sx = this.deltaXFrom(character.x);
var sy = this.deltaYFrom(character.y);
if (sx != 0 && sy !=0) {
(sx > 0 && sy > 0) ? this.moveDiagonally(6,2):
(sx > 0 && sy < 0) ? this.moveDiagonally(6,8):
(sx < 0 && sy > 0) ? this.moveDiagonally(4,2):
this.moveDiagonally(4,8);
}
else if (Math.abs(sx) > Math.abs(sy)) {
this.moveStraight(sx > 0 ? 6 : 4);
if (!this.isMovementSucceeded() && sy !== 0) {
this.moveStraight(sy > 0 ? 2 : 8);
}
} else if (sy !== 0) {
this.moveStraight(sy > 0 ? 2 : 8);
if (!this.isMovementSucceeded() && sx !== 0) {
this.moveStraight(sx > 0 ? 6 : 4);
}
}
};
})()