ページ 11

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

Posted: 2023年4月24日(月) 00:50
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();  ここは無効にする
            }

記述をご存知の方がおりましたら、どうかご教示のほど、何卒お願い申し上げます。

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

Posted: 2023年4月25日(火) 09:30
by 一般ピープル
こんにちは。

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

コード: 全て選択

sprite.alpha = 0;
とすると、スプライトを削除することなく非表示にできるかと思います。
再表示は、良きところでsprite.alphaに1を代入してください。

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

Posted: 2023年4月25日(火) 11:05
by 累積比率パレートマン
一般ピープル様


できました!!

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


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


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

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

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