全体攻撃アニメーションのSE多重再生を回避したい

アバター
スス丸
記事: 7
登録日時: 2020年1月26日(日) 11:27

全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by スス丸 » 2020年2月01日(土) 02:14

いつもお世話になります。

連続攻撃の場合、SEが多重再生されないようにするプラグインがあるのですが、
全体攻撃の場合にもSEが多重再生されないようにすることは出来ますでしょうか?
といいますのも、
ツクールMVのデフォルトだと、敵一体ずつ処理されるのですが、Trb様のPromptlyPopup.jsを使用しており、
全体攻撃を同時再生できるようにしています。

サイドビュー戦闘なので、対象を「画面」にするとターゲットとの位置が全くズレてしまいますし、
何とか回避方法はありませんでしょうか?

どうか宜しくお願いいたします。

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by ムノクラ » 2020年2月13日(木) 22:25

スス丸 さんが書きました:いつもお世話になります。

連続攻撃の場合、SEが多重再生されないようにするプラグインがあるのですが、
全体攻撃の場合にもSEが多重再生されないようにすることは出来ますでしょうか?
といいますのも、
ツクールMVのデフォルトだと、敵一体ずつ処理されるのですが、Trb様のPromptlyPopup.jsを使用しており、
全体攻撃を同時再生できるようにしています。

サイドビュー戦闘なので、対象を「画面」にするとターゲットとの位置が全くズレてしまいますし、
何とか回避方法はありませんでしょうか?

どうか宜しくお願いいたします。


確認ですが、プラグインは下記のV1.10で合っていますか?

▼ 全体攻撃スキルで全員同時にダメージ(Trb様作)
https://plugin.fungamemake.com/archives/19566
複数攻撃時のポップアップを一括表示します

試用したところ、どこに問題を感じているのかが実感できませんでした。

試したこと
1.PromptlyPopup.js V1.10を単体で新規プロジェクトに入れた。
2.(手っ取り早くテストするため)通常の「戦う」スキルを全体攻撃で全体アニメーション再生に指定した。
3.サイドビュー戦闘で戦闘した。

『対象を「画面」にするとターゲットとの位置が全くズレてしまいます』というのは、アニメーション設定での「対象」が「画面」という意味ですよね?
上の設定で同じ設定になっていると思うのですが、何が問題なのかが伝わってきません。
指定通り、画面全体にアニメーションが再生されているように思います。

エスパーするに、
1.アクターが敵に全体攻撃した時には、敵側だけに全体攻撃のアニメーションを再生したい。
2.敵がアクターに全体攻撃した時には、アクター側だけに全体攻撃のアニメーションを再生したい。
ということでしょうか?

質問の具体化をお願いいたします。

※プラグインのダウンロード元を明示すると、解決が早まりやすいです。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
スス丸
記事: 7
登録日時: 2020年1月26日(日) 11:27

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by スス丸 » 2020年2月15日(土) 02:08

サイドビューでは通常、「対象(位置)」を「中心」や「足元」や「頭上」にすると思います。
フロントビューの全体攻撃でのみ、「画面」にすると認識しています。

私はサイドビューにおいて、単体攻撃であろうと全体攻撃であろうと、
対象を「画面」にはしません。

たとえば、サイドビューで銃撃アニメの対象を「画面」にすると、
敵が居ない場所に銃弾が飛んでしまうからです。

当然ながら
敵→味方
味方→敵
両方のパターンにおいて、きちんとターゲットへ銃弾が飛ぶようにしたいため、
「中心」にしています。

しかし、そうすると、SEが多重再生されてしまうという意味です。

「画面」は私の選択肢にありません。
「中心」にした際の、多重再生の回避方法を知りたいと思い、ご質問しています。

この問題は、コードを修正できる者でないと解決できないと考えています
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by ムノクラ » 2020年2月15日(土) 07:21

スス丸 さんが書きました:サイドビューでは通常、「対象(位置)」を「中心」や「足元」や「頭上」にすると思います。
フロントビューの全体攻撃でのみ、「画面」にすると認識しています。

私はサイドビューにおいて、単体攻撃であろうと全体攻撃であろうと、
対象を「画面」にはしません。

たとえば、サイドビューで銃撃アニメの対象を「画面」にすると、
敵が居ない場所に銃弾が飛んでしまうからです。

当然ながら
敵→味方
味方→敵
両方のパターンにおいて、きちんとターゲットへ銃弾が飛ぶようにしたいため、
「中心」にしています。

しかし、そうすると、SEが多重再生されてしまうという意味です。

「画面」は私の選択肢にありません。
「中心」にした際の、多重再生の回避方法を知りたいと思い、ご質問しています。

この問題は、コードを修正できる者でないと解決できないと考えています


整理すると、
1.SV戦闘である。(FVでも同じような気がしますが)
2.スキルの範囲が敵全体である
3.アニメーションの基本設定の位置が全体以外(頭上、中心、足元)である
場合に、アニメーションの再生が対象個別に再生される。
これを個別ではなく1回で再生されるようにしたい。

という事で合っていますか?
戦闘中にEnterキーを押していると気づきにくいですね。

例(敵からの全体攻撃)
デフォルト
https://youtu.be/GcJLdek-Mzo

YEP Battle Engine Core
https://youtu.be/xtDOd5h5JXY

こんな感じにしたいという事で合っていますか?
テストの動画ではアニメーションが全体になっていますが、中心にしてYEP Battle Engine Coreをテストしたら同様の動作に見えました。

YEP Battle Engine Core は試しましたか?
使えない理由があるならば、何でしょうか?(有料化後も無料パックの中にあります。信条でYEPは使わないという人も居ますが…)
https://yanflyengineplugins.itch.io/fre ... essentials

▼ KZR 戦闘アニメーション軽量化(ぶちょー様作)
https://plugin.fungamemake.com/archives/11304
全体攻撃のアニメーションを1体分のみ表示し、アニメーションを軽量化

を試したのですが、動作している様子が感じられません。
修正すれば動くかも知れませんね。

他にも探したのですが、見つけることが出来ませんでした。


ちなみに、自分はSV戦闘でアニメーションの位置が全体であっても気にならないモノしか作ったことがないので、「スス丸さんの通常」は「ムノクラの通常」ではないみたいですね。

質問では「通常、常識、一般的、~みたい」は誤解を与える元になりやすいので、できるだけ具体的な表現を使うと、的確な返信がつきやすいと思います。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
くろうど
記事: 279
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡を取る:

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by くろうど » 2020年2月15日(土) 08:54

こんにちは。

私はサイドビューにおいて、単体攻撃であろうと全体攻撃であろうと、
対象を「画面」にはしません。

とありますが、おそらく、「アニメーション」が「編集できる」ことをご存じないのでしょう?

たとえば、サイドビューで銃撃アニメの対象を「画面」にすると、
敵が居ない場所に銃弾が飛んでしまうからです。

これも、アニメーションを編集してしまえば、バッチシ解決です!!

やり方は、昔に書いた私のブログをご覧ください。

【8】アニメーションの変更【RPGツクールMV初心者向け自作品解説】
https://blog.goo.ne.jp/kuroudo119/e/586dccb335e37e96839376f5fd4f9c5a

それでは。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
アバター
Plasma Dark
記事: 676
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by Plasma Dark » 2020年2月15日(土) 10:03

https://github.com/elleonard/RPGtkoolMV-Plugins/blob/master/plugins/DarkPlasma_PreventMultiDamageSe.js

PromptlyPopup.js を採用している場合に有効な、
連続攻撃や全体攻撃のダメージ/回避SEを1回ずつに抑えるプラグインを公開しました。

くらうどさんの仰るようにアニメーションの編集で解決できるならそれでも構いませんが、
エネミーの位置関係が常に一定であるとは限らないため、
アニメーションの編集のみでは対応できないこともあろうと思われます。


個人的には PromptlyPopup.js は以下の理由から採用をオススメしませんが。
- メンテナ(Trbさん)の音沙汰がない
- コードが古い
- かなりアドホックな対応をしており、戦闘系プラグインと容易に競合する
- コードの保守性に難あり
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by ムノクラ » 2020年2月15日(土) 14:28

スス丸 さんが書きました:Plasma Dark 様

コードのご提供、ありがとうございます。
やはりコーディングスキルをお持ちの方は理解力も早くて有難いです。

PromptlyPopup.jsを編集して解決したいと思っておりましたが、
そのようなデメリットがたくさんあったのですね。
大変勉強になりました。

早速導入させていただきましたが、多重再生されました。
PromptlyPopup.jsの状態をONとOFFに切り替えて試してみましたが、
ONの場合は、かわらず多重再生され、
OFFの場合は、多重再生される+戦闘メッセージが出る+ダメージポップが一体ずつ
になってしまいました。
戦闘メッセージを非表示にしつつ、ダメージポップもいっぺんに表示され、
なおかつ多重再生も回避出来たら、PromptlyPopup.jsが不要になるのではないかと考えています。

もし宜しければ、ご対応いただけますと幸いです。

-----------------------------------------------------------------------------------

くろうど様

アニメーションが編集できるのは存じ上げています。
くろうど様がおっしゃるのは、対象の位置が固定である場合ですから、それでは残念ながら解決できません。

しかしながら、ご自身のブログまでご開示くださり、ありがとうございました。
今後の参考にさせていただきます。

-----------------------------------------------------------------------------------

ムノクラ様

YEP系は機能過多で非常に使いづらいです。

そもそもこの問題は、
PromptlyPopup.jsを読解または編集できる人間でなければ解決できないと考えています。

ムノクラ様は他者のコードを掲載してサイトを運用なさっているようですが、
実質、ご自身には掲載できるレベルのコーディングスキルはないと聞いていますし、
本件に関して的を射た回答が出来るとは考え難いように思えます。

今回の場合の「通常、一般的」は、「デフォルト設定」という認識ですから
1から10までいちいち説明してあげないと理解できないようであれば、ちょっとお話になりません。
現にPlasma Dark 様は説明などせずともしっかり理解されています。

また、バージョンが最新版かどうか訊ねておられましたが
1.10 2016/5/6 少し修正
1.00 2016/5/5 初版
最終更新日が4年前で、尚且つ初版と最新版の差が1日しかないのに
マニュアル通りに確認してくるあたり、ちょっと足りない人なのかなと感じました。

色々と調べてくださったようなので
ありがとうございました。
これからも私のような初心者のために頑張ってください。

------------------------------------------------------------------------------------


足りない人間で申し訳ございませんでした。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
スス丸
記事: 7
登録日時: 2020年1月26日(日) 11:27

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by スス丸 » 2020年2月15日(土) 14:58

ムノクラ様

すみません、言い過ぎました。
アバター
Plasma Dark
記事: 676
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by Plasma Dark » 2020年2月15日(土) 15:57

PromptlyPopup.jsを編集して解決したいと思っておりましたが、
そのようなデメリットがたくさんあったのですね。
大変勉強になりました。


今回に限らず、配布されているプラグインを直接編集しようとする行為は危険です。
PromptlyPopup.js を使用している、という一文がサポートする意思を持つ人に対して正しく伝わらなくなるからです。
仮に今回の問題のみアドホックに解決したとして、将来別の問題が起きたときに原因が特定しにくくなるおそれもあります。

早速導入させていただきましたが、多重再生されました。


半端にスキルを持っているせいで説明をないがしろにしてしまいがちで申し訳ないのですが、
私が書いたスクリプトは PromptlyPopup.js が有効になっている場合に効果を発揮します。
また、プラグインリストで PromptlyPopup.js よりも下に配置されている必要があります。

もしそれでも多重再生されてしまうというのであれば、私が要件を取り違えているか、
何かしらのプラグインと競合している可能性があります。

以下の点についてご確認ください。

- 要件は、 PromptlyPopup.js が有効である場合に連続攻撃や全体攻撃によるダメージや回避のSEが多重に再生されてしまうのを防ぐことである(スキルアニメーションのSEではない)
- プラグイン管理で PromptlyPopup.js よりも下に私の書いた DarkPlasma_PreventMultiDamageSe.js が配置されている
- ゲーム開始後、デベロッパーコンソールを開いた時(WindowsならF12またはF8キーで開く)にエラーメッセージが表示されていない
- RPGツクールMVのバージョンが1.6.0以降である
- 初期状態のプロジェクトを作り、サイドビューバトルにして PromptlyPopup.js と DarkPlasma_PreventMultiDamageSe.js のプラグインのみを有効にし、全体攻撃してもSEが多重再生されない(される場合はご利用のツクールMVが古い可能性があります。されない場合はご自身のプロジェクトについて、利用されている何らかのプラグインが邪魔をしている可能性があります)

戦闘メッセージを非表示にしつつ、ダメージポップもいっぺんに表示され、
なおかつ多重再生も回避出来たら、PromptlyPopup.jsが不要になるのではないかと考えています。


PromptlyPopup.js の採用をオススメしないと書きましたが、すみません。
私のプラグインで代替できるという意味ではありません。
要件を全て満たす場合には、 PromptlyPopup.js と DarkPlasma_PreventMultiDamageSe.js の両方を有効にするか、あるいは代替のプラグインを新しく書く必要があります。
アバター
スス丸
記事: 7
登録日時: 2020年1月26日(日) 11:27

Re: 全体攻撃アニメーションのSE多重再生を回避したい

投稿記事by スス丸 » 2020年2月16日(日) 01:22

Plasma Dark様

ご連絡ありがとうございます。

新規プロジェクトを作成して、
DarkPlasma_PreventMultiDamageSe.jsと
PromptlyPopup.jsを入れて複数匹の戦闘を行い、
全体攻撃を行ってみたところ、やはり敵の人数分、アニメーションが再生されてしまいました。

恐らく誤解があるようで、
ダメージを受けたときのSEではなく、攻撃アニメーション再生時のSEです。
アニメーションは「中心」で人数分行いつつ、SEのみを多重再生させないようにしたかったのです。

「したかった」と過去形になっておりますのは、
SSEP_BattleSpeedUp_v2.jsという戦闘速度を調整するプラグインを元々導入しておりまして、
それのプラグインパラメーターにバトルログメッセージのフレーム数を変更する項目があり、
1体ずつアニメーションをズラすようフレームを調整して対応いたしました。

理想では、同フレームで複数匹いっぺんに攻撃アニメーションをさせ、
SEのみを1体分だけ再生させるようにしたかったのですが、
銃撃を一体ずつ流れるように撃ち、最後にダメージポップをいっぺんに表示させるというのも
なかなか躍動感があって、これもまた一興かと妥協いたしました。

色々とヒントをいただきまして、ありがとうございました。
おかげさまで、なんとか問題は解決いたしました。

別件になりますが、PromptlyPopup.jsにある以下のコードにつきまして、

コード: 全て選択

//-----------------------------------------
//多段ヒット技を使った時ポップアップが縦に並ぶようにする処理
//無くても問題ないので、不要だったり他のプラグインと競合する場合は削除して下さい
Sprite_Battler.prototype.setupDamagePopup = function() {
    if (this._battler.isDamagePopupRequested()) {
        if (this._battler.isSpriteVisible()) {
            var sprite = new Sprite_Damage();
            sprite.x = this.x + this.damageOffsetX();
            sprite.y = this.y + this.damageOffsetY();
            sprite.setup(this._battler);

            this._damages.forEach(function(Sprite){
            Sprite.y -= 30});
            this._damages.push(sprite);
            this.parent.addChild(sprite);


        }
        this._battler.clearDamagePopup();
   this._battler.clearResult();
    }
};
//-------------------------------------------


この処理を入れていると、
多段攻撃の回数に応じてダメージポップを一段ずつズラして表示してくれるようになります。

ただ、多段攻撃でない場合でも、
ダメージポップが消える間際に一段上に上がることが5回に1回くらいの割合でありまして
この現象は、PromptlyPopup.jsの配布ページ{ツクマテ:https://tm.lucky-duet.com/viewtopic.php?t=1216}にも報告されているのですが、
Trb様が回答されておらず、そのままになっている不具合です。

もしも改善できそうでしたら、是非ともよろしくお願いいたします。

“MV:質問” へ戻る