ページ 11

【解決済み】敵に特定のステートがついている場合に敵グラフィックを半透明にしたい

Posted: 2019年12月14日(土) 18:21
by 紫苑もみじ
敵に特定のステートにかかっている場合は敵グラフィックを半透明にしたいと考えています。

そこで次のようなコードを書いたのですが、敵のグラフィックだけでなくステートのアイコンも半透明となってしまいます(画像参照)。

コード: 全て選択

var _updateEffect = Sprite_Enemy.prototype.updateEffect;
Sprite_Enemy.prototype.updateEffect = function() {
    if(this._enemy.isStateAffected(44)){//「透明化」ステートがついている場合は不透明度を下げる
        this.opacity = 50;
    }
    _updateEffect.call(this);
};
おそらく、ステートアイコンの表示に関わるSprite_StateIcon(_stateIconSprite)がSprite_Enemyに含まれているから影響を受けているのだと思うのですが、これを回避する方法はあるでしょうか?
よろしくお願い致します。
opacity.png
opacity.png (55.89 KiB) 閲覧された回数 2426 回

Re: 敵に特定のステートがついている場合に敵グラフィックを半透明にしたい

Posted: 2019年12月14日(土) 18:47
by トリアコンタン
こんにちは!
ご推察のとおり、Sprite_StateIconの透明度は親のSprite_Enemyの透明度に自身の透明度を掛けた値になります。
以下のコードを足すとSprite_StateIconの透明度が親の透明度の影響を受けなくなります。

コード: 全て選択

var _Sprite_StateIcon_updateTransform = Sprite_StateIcon.prototype.updateTransform;
Sprite_StateIcon.prototype.updateTransform = function updateTransform() {
    _Sprite_StateIcon_updateTransform.apply(this, arguments);
    this.worldAlpha = this.alpha;
};

Re: 敵に特定のステートがついている場合に敵グラフィックを半透明にしたい

Posted: 2019年12月14日(土) 19:07
by 紫苑もみじ
無事に回避することができました。
ご教示ありがとうございました!