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

アバター
Plasma Dark
記事: 676
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

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

投稿記事by Plasma Dark » 2020年2月16日(日) 07:38

恐らく誤解があるようで、
ダメージを受けたときのSEではなく、攻撃アニメーション再生時のSEです。


はい。中途半端にエスパーした結果、こういうことになりました。
要件の詳細確認を怠っちゃいけませんね。反省しています。

こういうことが容易に起きるので、何か技術的に解決したい問題がある場合、1から10までいちいち説明する必要があります。
説明する相手に技術があろうとなかろうと、これは変わりません。
むしろ真に技術のある方であれば、1から10までの説明を促すような書き方で要件を確認してくれることもあるでしょう。

要件の定義や説明はとても難しいことですので、一生懸命理解しようとしてくれた方に、たとえ的はずれな回答をされたとしても、説明を諦めたりしないでください。

私がダメージを受けた際のSEが対象であると考えたことの言い訳としては、あらゆる全体攻撃スキルにおいて、PromptlyPopup.jsを導入した際に重なって再生される音がそれだからです。
攻撃アニメーション用のSEはアニメーションごとにどのSEをどのタイミングで再生させるかが設定可能なため、「全体攻撃のSEを多重再生させたくない」という表現だけでは対象が攻撃アニメーション用のSEであると特定できませんでした。

たとえば、通常攻撃を敵全体対象に書き換えて確認してみるとわかりますが、全体を対象としたスキルのアニメーション表示は同時に行われるわけではなく、対象ごとにディレイを伴います。
(フレーム単位で再生タイミングが指定されているSEも当然ずれます)

元々、アニメーションのフレームを調整するようなプラグインを導入されていたのであれば、その情報も前もっていただけると今回のような勘違いは防げたかもしれません。
(とは言え、SEが重複して再生されることとの関係を正しく認識するのもまた難しい話ですので、今回の要件取り違えは起こるべくして起こったことのようにも思っています。気にしすぎないでください)

アニメーションをずらし、演出面の変更でひとまず解決とのことですが、アニメーションのSE多重再生を防止するプラグインの実装方針だけ簡単に書いておきます。

Sprite_Animation.prototype.createSprites の中で this._duplicated を制御し、それが真であるようなアニメーションについてはSEの再生を行わないようなコードが書かれています。
実は、内部的には画面対象のアニメーションもターゲット数分処理が行われていて、最初の1回だけ this._duplicated が偽になるような処理になっています。
ですので、それを参考に、SE多重再生をさせたくないアニメーションについて、duplicatedフラグを制御してあげるのが良さそうです。

アバター
Plasma Dark
記事: 676
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

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

投稿記事by Plasma Dark » 2020年2月16日(日) 08:48

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


別件であれば、別トピックを立てていただいたほうが健全かと思います。
同じ問題に当たった人が過去ログ検索する際に見るのはトピックのタイトルですので、直接タイトルと関係のない内容を書いてしまうのは、実はあまり良くありません。

とは言え、簡単に調べてみた結果だけ書いておきます。
PromptlyPopup.jsは、 「setupDamagePopup メソッドは前のダメージが消えてから実行されるべきもの」という間違った前提で書かれているようです。
実際は、ターンの最後のダメージポップアップが消える前にもう一度、敵味方全員に対してリジェネ用に実行されます。
そこで残ってしまっているダメージポップアップについてもy座標を減算し、一段上へ動いているように見えてしまっているようです。

Sprite_Damageの子要素が存在する場合のみy座標減算、みたいなことすればいい感じになるんじゃないかと思いますが、試してないのでなんとも。
あと、リジェネ効果がある場合はダメージポップアップが上へ押しやられてその下に回復表示が出てくる感じになりそうです。
消えるまでの時間差はありますし、そんなに不自然な表示にはならないと思いますが。

“MV:質問” へ戻る