わからない点がありアドバイスをいただけると嬉しいです。
●問題点
SRD_CameraCoreはフォーカス対象を指定すると自動でその対象を中心としてカメラを移動し、そのキャラクターが移動したとき自動でカメラが追従してくれる機能があります。
ところがDotMoveSystemを導入した時、「フォロワーのみ機能しなくなる」という症状があり、これを解決したいと考えています。
内容としては、エラーなどが出るわけではありませんが、カメラが固定され一切スクロールしなくなってしまいます。
●わかっていること
まずSRD_CameraCoreは
555行目
コード: 全て選択
Game_Character.prototype.updateScroll = Game_Player.prototype.updateScroll;
589行目~
コード: 全て選択
const _Game_Follower_update = Game_Follower.prototype.update;
Game_Follower.prototype.update = function () {
var lastScrolledX = this.scrolledX();
var lastScrolledY = this.scrolledY();
_Game_Follower_update.apply(this, arguments);
//ここで this.scrolledX()、this.scrolledY();が更新されていない?
this.updateScroll(lastScrolledX, lastScrolledY);
};
Game_Follower.prototype.updateScroll = function (lastScrolledX, lastScrolledY) {
if ($gameScreen.focusEvent === this._memberIndex * (-1)) {
Game_Character.prototype.updateScroll.apply(this, arguments);
}
};
フォロワーをカメラスクロールの対象にする(そのときはGame_PlayerのupdateScrollが行われないようにしておく)というやり方をとっているようです。
そのupdateScrollの処理は
コアスクリプトrpg_object7701行目~
コード: 全て選択
Game_Player.prototype.updateScroll = function(lastScrolledX, lastScrolledY) {
var x1 = lastScrolledX;
var y1 = lastScrolledY;
var x2 = this.scrolledX();
var y2 = this.scrolledY();
if (y2 > y1 && y2 > this.centerY()) {
$gameMap.scrollDown(y2 - y1);
}
if (x2 < x1 && x2 < this.centerX()) {
$gameMap.scrollLeft(x1 - x2);
}
if (x2 > x1 && x2 > this.centerX()) {
$gameMap.scrollRight(x2 - x1);
}
if (y2 < y1 && y2 < this.centerY()) {
$gameMap.scrollUp(y1 - y2);
}
};
lastScrolledXとthis.scrolledX()、lastScrolledYとthis.scrolledY()が常に同じ値になってしまっているということがわかりました。
それによって$gameMap.scroll~が実行されないので、カメラスクロールが行われないというのが理由のようでした。
SRD_CameraCoreにコメントした通り
var lastScrolledX = this.scrolledX();
var lastScrolledY = this.scrolledY();で代入した後
_Game_Follower_update.apply(this, arguments);が呼ばれているわけですが
ここでthis.scrolledX()、this.scrolledY()が更新されないといけない?のかと思いましたが
処理の追い方がいまいちわからず、詰まってしまいました。
DotMoveSystemはかなり色々と処理を書き換えていて、しばしば競合するので手放そうかとも考えたのですが
結局イベントにもドット単位移動を行わせることができるプラグインが他に見つからず、また
イベントの当たり判定の調整なども欲しい機能なので、できればこのプラグインを使いたいと思っています。
https://plugin.fungamemake.com/archives ... e_vignette
https://plugin.fungamemake.com/archives/26500
プラグインのリンク(ツクプラ)は上記です。よろしくお願いします。