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

返信する
アバター
紫苑もみじ
記事: 18
登録日時: 2019年6月27日(木) 17:20
連絡する:

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

投稿記事 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) 閲覧された回数 2417 回
最後に編集したユーザー 紫苑もみじ [ 2019年12月14日(土) 19:07 ], 累計 1 回
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡する:

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

投稿記事 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;
};
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
紫苑もみじ
記事: 18
登録日時: 2019年6月27日(木) 17:20
連絡する:

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

投稿記事 by 紫苑もみじ »

無事に回避することができました。
ご教示ありがとうございました!
返信する

“MV:質問”に戻る