【ツクールMV】YED sideviewBattlerとYEP Animated SV Battlersでの不具合

このエントリーをはてなブックマークに追加
このエントリーを Google ブックマーク に追加
Pocket

ツクールMV(RPGMakerMV)バージョン1.3以降からの問題で、ちょくちょく上がっているのが、以前から使っていたプラグインが急に使えなくなること。

僕の作品は特にプラグインを大量に使っているので、こういった不具合がちょくちょく起きます。

その中でも今回は、サイドビューバトルにおいて、敵のアニメーションを”YEP Animated SV Battlers”を利用して作る際、フレームを拡張できるプラグイン、”YED sideviewBattler”と併用したときの不具合の解決法を紹介します。

※今回のプラグインはYanfly氏作成のプラグインになります。
YEP Animated SV Battlers
YED sideviewBattler
Yanfly

YEP Animated SV Battlersは、敵に味方と同様のフレーム割のモーションをつける事ができるプラグインで、YED sideviewBattlerはサイドビューモーションのフレーム数を3以上に増やしたり、フレームスピードなどを変えたりできるプラグインです。

これらを使うことで、敵の動きを実質味方の動きと同じように組むことができます。

敵にsideviewBattlerを採用すると、前後に動く現象

原因はわかりませんが、これらプラグインを採用している場合、あるアップデート時期から、挙動がおかしくなります。
具体的には、戦闘中にキャラが画面の前後を行ったり来たりします。

これがどうやっても治らずに、モーションを付けるのを諦めようかと思っていました。

それでも諦めずに、ダメ元で海外のフォーラムを探し回っていた所、案外似たような事例で悩んでいる人が多くいて、その中でなんと解決策が載っているものがあったので、それを試した所、なんと解決したのでやり方を解説します。

プラグイン不具合の解決策

参考にしたサイトはforums.rpgmakerweb.comです。

過去のものを検索すると出てきます。

英語なので、ちょっと理解しづらい部分がありますが、要約すると、どうもSideview Battlerのプラグイン側を修正する必要があるようなことを言っていますね。

具体的にはツクールを1.3以降にアップデートしたときになにか問題があって、そこからこのような事象が起き始めたようです。

対応策はプラグインを書き換えです。

①YED_SideviewBattler.jsプラグインの1076行目、”this.setFrame(cx * cw, cy * ch, cw, ch);”をコメントアウト

コメントアウトとは、プログラムからコードを取り除くこと。
文章の前に//をつけると、その行のプログラムは作動しなくなります。
ちなみにそのまま消しても同じ効果は得られますが、こっちのほうがあとからなにかあったときに楽です。

②YED.SideviewBattlerセクションの最後の方に以下のコードを入れます。

 var _Game_Battler_spriteWidth = Game_Battler.prototype.spriteWidth;
    Game_Battler.prototype.spriteWidth = function() {
     
        if (this.isSideviewBattler()) {
            if (Imported.YEP_X_AnimatedSVEnemies) {
                    var frameSizes = this.getSideviewSizes();
                    var cw = frameSizes[0];
                    return cw;
            }
        }
        return _Game_Battler_spriteWidth.call(this);
    };
 
    var _Game_Battler_spriteHeight = Game_Actor.prototype.spriteHeight;
    Game_Battler.prototype.spriteHeight = function() {
        if (this.isSideviewBattler()) {
            if (Imported.YEP_X_AnimatedSVEnemies) {
                    var frameSizes = this.getSideviewSizes();
                    var ch = frameSizes[1];
                    return ch;
            }
        }
        return _Game_Battler_spriteHeight.call(this);
    }; 

僕の場合は”Game_Battler.prototype.getSideviewSpeed{};”のすぐ後ろにこのコードを入れています。

僕はJavascriptは全くの素人で、この辺ことはよくわからず説明はできませんが、とりあえず、これでなんとかなっています。(バージョン1.6.1環境)

この2つの作業で、おそらくは解決するかと。
僕の場合はこれで使える状態にはなっていますが、内容が理解できないとやっぱり怖いですよね・・・

シェアする

フォローする