ページ 11

戦闘アニメーションの表示切替プラグイン

Posted: 2016年7月10日(日) 16:27
by ハーリー
オプションに「戦闘アニメーション」の項目を追加します。
プレイヤーが任意に戦闘アニメーションを非表示にすることができます。
ハクスラ系のRPGや低スペック環境において戦闘のテンポアップを図ります。
2016-07-12.png

画像
画像
画像
画像
画像
画像

Re: 戦闘アニメーションの表示切替プラグイン

Posted: 2016年7月12日(火) 00:38
by U-D
ハーリー様、素敵なプラグインをありがとうございます。
一つ要望があるのですがよろしいでしょうか?

プラグインを導入してから初めてゲームを起動した際、
オプションの戦闘アニメーションの項目が OFF になっております。

オプションに手をつけずにゲームを開始するプレイヤーの方々もいらっしゃると思うので、
こちらの項目をデフォルトで ON にしておく事ができるパラメータを
追加していただけないでしょうか?

Re: 戦闘アニメーションの表示切替プラグイン

Posted: 2016年7月12日(火) 08:27
by ハーリー
>U-D様

ご報告ありがとうございます!
初期状態からONにしていたつもりでしたが、セーブデータをロードして使用していたため、
ただの勘違い…デバック不足でした。申し訳ありません。

最初からONにする方法がわからなかったので、
「戦闘アニメーション」をOFFにするのではなく
「戦闘アニメ非表示」をONにすると非表示にする方式に変更しました。

Re: 戦闘アニメーションの表示切替プラグイン

Posted: 2016年7月12日(火) 19:36
by yamachan
こんばんは! :D

オプションメニューを扱うとき、初期状態のチェックって忘れがちですよね。
たまに config.rpgsave を削除してテストする癖をつけるのが良いかもしれません。

ConfigManager.applyData ですが、config.rpgsave が無いと空のオブジェクトが渡されます。
また途中で本プラグインを組み込んだ場合でも、保存された値は無い(===undefined)ですね。
なので例えば、以下のように変更してはどうでしょうか。

コード: 全て選択

var _ConfigManager_applyData = ConfigManager.applyData;
ConfigManager.applyData = function(config) {
   _ConfigManager_applyData.apply(this, arguments);
   this.animationCut = config.animationCut === undefined ? true : this.readFlag(config, 'animationCut');
};


ついでなのですが、startAnimation は元のロジックを生かしたほうが、他のプラグインとの競合が減るとおもいます。

コード: 全て選択

var _Game_Battler_startAnimation = Game_Battler.prototype.startAnimation;
Game_Battler.prototype.startAnimation = function(animationId, mirror, delay) {
   if(ConfigManager.animationCut){
      _Game_Battler_startAnimation.call(this, arguments)
   }
};


ではでは。

Re: 戦闘アニメーションの表示切替プラグイン

Posted: 2016年7月12日(火) 21:20
by ハーリー
>yamachan様

詳しい解説ありがとうございます!
なるべくcall関数を利用して、元ロジックを利用する方が競合が少ないのですね。

早速お借りしたコード(下の方)を入れてみたのですが、
cannot read property 'position' of undefined
が表示され、上手く機能しませんでした…。
また上の方のコードについてですが、初期状態で他のオプション項目
「常時ダッシュ」「コマンド記憶」の項目がOFFになっていることから、
このプラグインもそれに倣い初期状態はOFFにする方が納まりがいいのではないか、
と思ったので現状のままにすることにします。

それにしても、プラグインのコードを添削していただき、とても勉強になりました! :D

Re: 戦闘アニメーションの表示切替プラグイン

Posted: 2016年7月12日(火) 23:58
by yamachan
こんばんは! :D

すみません、確認せず元のコードを中途半端に書き換えてしてしまいました。 :oops:
apply じゃないので引数を配列で渡してはダメですね…

コード: 全て選択

if(ConfigManager.animationCut){
   _Game_Battler_startAnimation.call(this, animationId, mirror, delay);
}

もしくは

コード: 全て選択

if(ConfigManager.animationCut){
   _Game_Battler_startAnimation.appy(this, arguments);
}

で動作するとおもいます。

元の関数をなるべく呼ぶようにすると、同じ関数を書き換える他のプラグインと組み合わせても、うまく動作する可能性が高まります。
今回はOFFだと元の関数を呼ばないので、完全ではないですが…
自分で書く場合には「OFFの場合、animationIdにnull指定してでも一応は呼んでおいたほうが無難だろうか、いやそこまですることはないか?でも…」など悩むとおもいます :D

Re: 戦闘アニメーションの表示切替プラグイン

Posted: 2016年7月13日(水) 00:54
by U-D
ハーリー様、素早く対応していただき助かります!
ありがとうございました!