【解決済】強制中央スクロールプラグインで競合で位置がどんどんズレてしまいます

返信する
kumatokuma
記事: 42
登録日時: 2017年7月21日(金) 13:50

【解決済】強制中央スクロールプラグインで競合で位置がどんどんズレてしまいます

投稿記事 by kumatokuma »

強制中央スクロール
https://plugin.fungamemake.com/archives/1154

ドット移動システム
https://plugin.fungamemake.com/archives/27621

YEP Core
https://plugin.fungamemake.com/archives/10501


プレイヤーが常にマップ中央に配置されるように強制中央スクロールを導入したのですが、
動くとどんどん中央からズレていってしまいます。

ドット移動プラグインとYEPCoreと一緒だとズレる事が分かりました。
どちらか1つだとズレません、この2つを同時に入れるとズレてしまいます。

YEPCoreは解像度もデフォルト設定から変えておらず、他にフィールドに関わるオプション項目も
無いので何故入れるとズレてしまうのか分からないです。

どなたか競合解消のご助言を頂けるとありがたいです。よろしくお願いいたします。
最後に編集したユーザー kumatokuma [ 2025年11月29日(土) 18:13 ], 累計 1 回
すおう
記事: 40
登録日時: 2024年5月17日(金) 08:30

Re: 強制中央スクロールプラグインで競合で位置がどんどんズレてしまいます

投稿記事 by すおう »

YEP_CoreEngine.jsの1618~1649行目にある
以下のスクリプトが悪さしていると思われます。
カメラの移動距離を算出する部分で、タイル1マスを1歩分として多少の数値誤差は丸めてしまう補正をしています
(そのためドット移動と相性が悪いようです)

コード: 全て選択

//=============================================================================
// Game_Map
//=============================================================================

Game_Map.prototype.displayX = function() {
    return parseFloat(Math.floor(this._displayX *
      this.tileWidth())) / this.tileWidth();
};

Game_Map.prototype.displayY = function() {
    return parseFloat(Math.floor(this._displayY *
      this.tileHeight())) / this.tileHeight();
};

Game_Map.prototype.adjustX = function(x) {
    if (this.isLoopHorizontal() && x < this.displayX() -
            (this.width() - this.screenTileX()) / 2) {
        return x - this.displayX() + $dataMap.width;
    } else {
        return x - this.displayX();
    }
};

Game_Map.prototype.adjustY = function(y) {
    if (this.isLoopVertical() && y < this.displayY() -
            (this.height() - this.screenTileY()) / 2) {
        return y - this.displayY() + $dataMap.height;
    } else {
        return y - this.displayY();
    }
};
このうち『Game_Map.prototype.displayX』『Game_Map.prototype.displayY』の2つをコメントアウトするか、
『Game_Map.prototype.adjustX』『Game_Map.prototype.adjustY 』の2つをコメントアウトすると問題の挙動は起きなくなりました。個人的には全部コメントアウトしたほうがいいとは思っています。

問題はこのスクリプトが何かしらの挙動修正やバグ解消を目的として記述されていると思われることです。
その修正目的がわからないので、他で挙動がおかしくなる可能性は常に留意しておいてください
特にこのスクリプトは『Yanfly Engine Scripts』の大元とのことなので、他の『Yanfly Engine Scripts』を使っている場合、影響が出る可能性があります。
kumatokuma
記事: 42
登録日時: 2017年7月21日(金) 13:50

Re: 【解決済】強制中央スクロールプラグインで競合で位置がどんどんズレてしまいます

投稿記事 by kumatokuma »

すおう様、ご返信ありがとうございます。

教えてくださった通りに変更した所、位置がズレなくなりました。
変更に伴う注意点についても留意しておきたいと思います。

この度は本当にありがとうございました!
返信する

“MV:質問”に戻る