ウィンドウの透過度を、戦闘シーンと通常シーンで分けたい。

返信する
アバター
いづみ
記事: 78
登録日時: 2023年3月15日(水) 18:15

ウィンドウの透過度を、戦闘シーンと通常シーンで分けたい。

投稿記事 by いづみ »

ツクールMZで制作をしています。

戦闘時はウィンドウの透過度を0に下げることで大きなエネミーキャラの全体を表示させることに成功したのですが、通常MAP時の会話ウィンドウも透明化して見づらくなってしまいました。
戦闘時の透過度と、MAP会話時のウィンドウの透過度を個別に設定することはできるのでしょうか。
あるいは何か別のプラグインが必要になるのでしょうか?

1,2枚めの戦闘シーンのウィンドウ透明度は、大ボスを大きく表示したいのでこれでいい。
1.png
2.png
3枚目の会話シーンはウィンドウが透明すぎて、MAPが映り込んで可読性が悪い。ここを修正したいです
3.png
すおう
記事: 38
登録日時: 2024年5月17日(金) 08:30

Re: ウィンドウの透過度を、戦闘シーンと通常シーンで分けたい。

投稿記事 by すおう »

どうやってウィンドウの透過度を0に下げているかまず教えていただけますか?
自作プラグインなら条件分岐で戦闘シーンでのみ適用にすればいいと思います

以下は一例です。PluginCommonBase.jsが入っていることが条件

コード: 全て選択

const scene = SceneManager._scene;
if(scene && PluginManagerEx.findClassName(scene) === "Scene_Battle"){
    //透過度を0に下げる内容
}
アバター
いづみ
記事: 78
登録日時: 2023年3月15日(水) 18:15

Re: ウィンドウの透過度を、戦闘シーンと通常シーンで分けたい。

投稿記事 by いづみ »

すおう さんが書きました:どうやってウィンドウの透過度を0に下げているかまず教えていただけますか?
自作プラグインなら条件分岐で戦闘シーンでのみ適用にすればいいと思います

以下は一例です。PluginCommonBase.jsが入っていることが条件

コード: 全て選択

const scene = SceneManager._scene;
if(scene && PluginManagerEx.findClassName(scene) === "Scene_Battle"){
    //透過度を0に下げる内容
}


・ウィンドウの透過度は、ツクールMZの基本システムにある。(システム2)
【ウィンドウの不透明度】を0に設定することで実行しています。
しかし、これを行うと全てのウィンドウが透明になってしまうので、個別に設定したいと考えています
winndou.JPG
・また、jsには【PluginCommonBase.js】は入っています。
キャプチャ.JPG
・自作プラグインなどはもっていません。
すおう
記事: 38
登録日時: 2024年5月17日(金) 08:30

Re: ウィンドウの透過度を、戦闘シーンと通常シーンで分けたい。

投稿記事 by すおう »

システム2にウインドウ不透明度の設定があることを初めて知りました。
ウインドウカラーはシステム1で設定できるのにややこしいなこれ・・・

探せば誰かがプラグイン公開していそうですが、自分の知ってる限りでは分からなかったので
とりあえず要望だけ満たす超限定のプラグイン作ったので置いておきます
他の設定もできるもっといいプラグインが見つかったらそちらに乗り換えてください

コード: 全て選択

//=============================================================================
// RPG Maker MZ - シーン別ウインドウ透過度設定
//=============================================================================
// Version
// 1.0.0 2024/05/18 初版
//=============================================================================
/*:
 * @target MZ
 * @plugindesc シーン別ウインドウ透過度設定
 * @author すおう
 * @base PluginCommonBase
 *
 * @help SUOU_WindowOpacityByScene.js
 * シーンごとにウインドウの透過度を設定できます
 * 
 * @param List
 * @text 変更リスト
 * @desc ウインドウの透過度を変更する対象シーンとその透過度を設定してください
 * @type struct<List>[]
 */
/*~struct~List:
 * @param Scene
 * @text 変更シーン
 * @desc ウインドウの透過度を変更するシーンを選んでください
 * @type select
 * @default Scene_Menu
 * @option タイトル
 * @value Scene_Title
 * @option マップ
 * @value Scene_Map
 * @option ゲームオーバー
 * @value Scene_Gameover
 * @option バトル
 * @value Scene_Battle
 * @option メインメニュー
 * @value Scene_Menu
 * @option アイテム
 * @value Scene_Item
 * @option スキル
 * @value Scene_Skill
 * @option 装備
 * @value Scene_Equip
 * @option ステータス
 * @value Scene_Status
 * @option オプション
 * @value Scene_Options
 * @option セーブ
 * @value Scene_Save
 * @option ロード
 * @value Scene_Load
 * @option ゲーム終了
 * @value Scene_End
 * @option ショップ
 * @value Scene_Shop
 * @option 名前入力
 * @value Scene_Name
 * @option デバッグ
 * @value Scene_Debug
 *
 * @param Opacity
 * @text 透過度
 * @desc ウインドウの透過度を設定してください
 * @type number
 * @default 192
 * @min 0
 * @max 255
 */

(() => {
    'use strict';
    const script = document.currentScript;
    const param  = PluginManagerEx.createParameter(script);

    const _Window_Base_updateBackOpacity = Window_Base.prototype.updateBackOpacity;
    Window_Base.prototype.updateBackOpacity = function() {
        const scene = SceneManager._scene;
        if(scene){
            const sceneName = PluginManagerEx.findClassName(scene);
            for(const setting of param.List){
                if(setting.Scene === sceneName){
                    this.backOpacity = setting.Opacity;
                    return;
                }
            }
        }
        _Window_Base_updateBackOpacity.apply(this, arguments);
    };

})();
アバター
いづみ
記事: 78
登録日時: 2023年3月15日(水) 18:15

Re: ウィンドウの透過度を、戦闘シーンと通常シーンで分けたい。

投稿記事 by いづみ »

[quote="すおう"]システム2にウインドウ不透明度の設定があることを初めて知りました。
ウインドウカラーはシステム1で設定できるのにややこしいなこれ・・・

探せば誰かがプラグイン公開していそうですが、自分の知ってる限りでは分からなかったので
とりあえず要望だけ満たす超限定のプラグイン作ったので置いておきます
他の設定もできるもっといいプラグインが見つかったらそちらに乗り換えてください


わ、わーーー
ありがとうございます。
jsの使い方まだ殆どわかってませんが、使わせていただきます。
本当に助かります。
もし、うまく実装できなかったら使い方を教わっても大丈夫ですか?(いま見たので、まだ試してません)
上手く動かすことができた場合にも書き込みをさせていただきます
m(_ _)m
作っていただき、誠にありがとうございます。
すおう
記事: 38
登録日時: 2024年5月17日(金) 08:30

Re: ウィンドウの透過度を、戦闘シーンと通常シーンで分けたい。

投稿記事 by すおう »

うまくいっているかわかりませんが、とりあえず基礎から順番に書いておきます

1、新しくメモ帳を開きます
2、今回のコード全部をメモ帳にコピーします
3、名前を付けて保存するとき、拡張子を.jsにして保存
 (今回は『SUOU_WindowOpacityByScene.js』というファイル名にしてください)
4、ファイルがjsファイルになっているか確認(アイコンが変わっていると思います)
  もしメモ帳のままの場合、拡張子が非表示になっていて、.txtのままであることが原因と考えられます
  拡張子の表示や変更方法は『拡張子 変更』などと検索すればたくさんでてきます
5、プラグインの入れ方は以下動画の40秒以降を参照してください
  https://youtu.be/BOmLWnmo9G4
6、プラグインを入れたら『パラメータ』をゲームにあった設定にしてください
  今回の場合はプラグインの『変更リスト』をダブルクリック
 →空のリストが出てくるので適当なところをダブルクリック
 →シーンと透過度を設定できるので『バトル』と『0』を設定
 →OKボタンを押し続けてプラグインのウインドウをすべて閉じれば設定が保存されます
7、ゲームデータを保存してからプラグインが反映されているか確認してください
  (テストなどではゲームデータを保存しないとプラグインの設定が反映されません)
アバター
いづみ
記事: 78
登録日時: 2023年3月15日(水) 18:15

Re: ウィンドウの透過度を、戦闘シーンと通常シーンで分けたい。

投稿記事 by いづみ »

すおう さんが書きました:うまくいっているかわかりませんが、とりあえず基礎から順番に書いておきます

1、新しくメモ帳を開きます
2、今回のコード全部をメモ帳にコピーします
3、名前を付けて保存するとき、拡張子を.jsにして保存
 (今回は『SUOU_WindowOpacityByScene.js』というファイル名にしてください)
4、ファイルがjsファイルになっているか確認(アイコンが変わっていると思います)
  もしメモ帳のままの場合、拡張子が非表示になっていて、.txtのままであることが原因と考えられます
  拡張子の表示や変更方法は『拡張子 変更』などと検索すればたくさんでてきます
5、プラグインの入れ方は以下動画の40秒以降を参照してください
  https://youtu.be/BOmLWnmo9G4
6、プラグインを入れたら『パラメータ』をゲームにあった設定にしてください
  今回の場合はプラグインの『変更リスト』をダブルクリック
 →空のリストが出てくるので適当なところをダブルクリック
 →シーンと透過度を設定できるので『バトル』と『0』を設定
 →OKボタンを押し続けてプラグインのウインドウをすべて閉じれば設定が保存されます
7、ゲームデータを保存してからプラグインが反映されているか確認してください
  (テストなどではゲームデータを保存しないとプラグインの設定が反映されません)



返信遅くなりました。
JavaScriptを実装したところ完璧に動作しました。画面が見やすくなって、すごくありがたいです。
本当にありがとうございました。大きな感謝を!! m(_ _)m
返信する

“MZ:質問”に戻る