戦闘時に再生中のスキルアニメーションを最終フレームに強制移動させる方法

返信する
累積比率パレートマン
記事: 33
登録日時: 2022年1月12日(水) 01:12

戦闘時に再生中のスキルアニメーションを最終フレームに強制移動させる方法

投稿記事 by 累積比率パレートマン »

エンジニアの皆様

お疲れ様です。


表題のとおり、戦闘時に再生中のスキルアニメーションを

最終フレームに強制移動させる方法はありますでしょうか?


トリアコンタンさんの「TraitAnimation.js」を使っており、

これは、特定のステートが付与されたら、付与中は指定のアニメーションを再生させ続けるというプラグインなのですが

そのステートが付与されているメンバーを入れ替えで控えアクターにする際、

フレーム分、アニメーションが再生されてから消えるため、

ステートにかかっていない別のアクターがかかっているように見えてしまうという問題があります。


これを瞬時に消す方法を模索しておりますものの、

アニメーションのスプライトをsprite.remove();などで削除すると、

なぜかもう一度同じメンバーを入れ替えたときに

スプライトが再起できず、表示されない問題が生じてしまうため、

スプライトを削除せずに、最終フレームへ移動させることで、

瞬時に消す、という目的を達成しようとしております。


【TraitAnimation.js】
https://raw.githubusercontent.com/triac ... imation.js


スプライト削除のメソッドの全文

コード: 全て選択

    Sprite_Battler.prototype.updateTraitAnimation = function() {
        this._traitAnimationSprite = this._traitAnimationSprite.filter(function(sprite) {
            if (!sprite.isPlaying()) {
                sprite.remove();
            }
            if (this._battler instanceof Game_Actor && !$gameParty.members().contains(this._battler)) {
                sprite.remove();
            }
            return sprite.isPlaying();
        }, this);
        this.setupTraitAnimation();
    };
以下のif内に、再生中のアニメーションを最終フレームに移動させる処理を追加したいと考えております。

コード: 全て選択

            if (this._battler instanceof Game_Actor && !$gameParty.members().contains(this._battler)) {
                //sprite.remove();  ここは無効にする
            }

記述をご存知の方がおりましたら、どうかご教示のほど、何卒お願い申し上げます。
一般ピープル
記事: 7
登録日時: 2022年4月20日(水) 01:02

Re: 戦闘時に再生中のスキルアニメーションを最終フレームに強制移動させる方法

投稿記事 by 一般ピープル »

こんにちは。

Sprite_Animationには、alpha(透明度)という要素が含まれますので

コード: 全て選択

sprite.alpha = 0;
とすると、スプライトを削除することなく非表示にできるかと思います。
再表示は、良きところでsprite.alphaに1を代入してください。
累積比率パレートマン
記事: 33
登録日時: 2022年1月12日(水) 01:12

Re: 戦闘時に再生中のスキルアニメーションを最終フレームに強制移動させる方法

投稿記事 by 累積比率パレートマン »

一般ピープル様


できました!!

本当に素晴らしいご助言です!!


動的に不透明度の設定ができたのですね!


いつもいつも助けていただき、どうお礼を申し上げればよいか…

心から感謝申し上げます。

これからも末永くよろしくお願いいたします。
返信する

“MV:質問”に戻る