【解決済み】特定のステートがついた敵を透明にするスクリプトにおける透明化解除のタイミングについて
Posted: 2021年2月14日(日) 22:15
いつもお世話になります。
以下のツクマテページに、
特定のステートがついた敵を透明にするプラグインが紹介されているのですが、
viewtopic.php?t=8710
そのステートが解除されたタイミングで透明化も解除されるかと思いきや
次のターンに敵が攻撃するまで透明化が解除されませんでした。
そこで、
透明化の解除を、ステート解除のタイミングと合わせようと
以下のようにelseを追加しました。
ところが、ステートID57がFalseのとき、常にthis.opacity = 255;の処理を通るため、
エネミーを倒したあと、消滅エフェクトは作動するのですが
消滅エフェクトのままエネミー画像が消えなくなってしまいました。
倒したエネミーがきちんと消えるように
戦闘不能ステートがtrueのとき、this.opacity = 0;とする以下の条件式を入れました。
しかしこれだと、消滅エフェクトが端折られて
一瞬でエネミーが消えてしまいます。
そもそもこの方法が正しいのかの判断が付きません。
良い方法がありましたら、一案をいただけますと幸いです。
どうかよろしくお願いいたします。
以下のツクマテページに、
特定のステートがついた敵を透明にするプラグインが紹介されているのですが、
viewtopic.php?t=8710
そのステートが解除されたタイミングで透明化も解除されるかと思いきや
次のターンに敵が攻撃するまで透明化が解除されませんでした。
そこで、
透明化の解除を、ステート解除のタイミングと合わせようと
以下のようにelseを追加しました。
コード: 全て選択
var _updateEffect = Sprite_Enemy.prototype.updateEffect;
Sprite_Enemy.prototype.updateEffect = function() {
if(this._enemy.isStateAffected(57)){//「透明化」ステートがついている場合は不透明度を下げる
this.opacity = 0;
}else{
this.opacity = 255;
}
_updateEffect.call(this);
};
var _Sprite_StateIcon_updateTransform = Sprite_StateIcon.prototype.updateTransform;
Sprite_StateIcon.prototype.updateTransform = function updateTransform() {
_Sprite_StateIcon_updateTransform.apply(this, arguments);
this.worldAlpha = this.alpha;
};
エネミーを倒したあと、消滅エフェクトは作動するのですが
消滅エフェクトのままエネミー画像が消えなくなってしまいました。
倒したエネミーがきちんと消えるように
戦闘不能ステートがtrueのとき、this.opacity = 0;とする以下の条件式を入れました。
コード: 全て選択
var _updateEffect = Sprite_Enemy.prototype.updateEffect;
Sprite_Enemy.prototype.updateEffect = function() {
if(this._enemy.isStateAffected(57)){//「透明化」ステートがついている場合は不透明度を下げる
this.opacity = 0;
}else{
if(this._enemy.isStateAffected(1)){
this.opacity = 0;
}else{
this.opacity = 255;
}
}
_updateEffect.call(this);
};
一瞬でエネミーが消えてしまいます。
そもそもこの方法が正しいのかの判断が付きません。
良い方法がありましたら、一案をいただけますと幸いです。
どうかよろしくお願いいたします。