ページ 1 / 1
[解決済]画面の停止とブラー効果の発動方法について
Posted: 2016年8月19日(金) 16:11
by pisk000
いつもお世話になっております。
ツクールmvの仕様として、メニューを開いたり、アイテム、セーブ画面などを開く際、マップ上のイベントなどを一時停止した後に
ブラーを掛けてぼかし、その上にメニュー等のウィンドウが展開されるようになっていると思うのですが、
この処理をマップ上の任意のタイミング(「文章の表示」や「ピクチャの表示」を行う際など)で、
スクリプトコマンドなどを使って発動・解除させる方法 はありますでしょうか?
恐らく複雑な処理はしていないと思うのですが、検索をかけたり本体のJsを見るなどしてもスクリプトの知識が無いため
理解できませんでした。
詳しい方どなたかご教示いただければ幸いです。。
Re: 画面の停止とブラー効果の発動方法について
Posted: 2016年8月19日(金) 17:51
by ふしぎうさぎ
簡単に調べてみましたが。
ツクールのバージョンが1.3より前であれば可能です。
1.3以降の場合、ぼかしがうまく機能しませんでした。
一応スクリプトを書いておきます。
まず、他のイベントを停止する方法ですが、
スクリプトコマンドで以下のように書きます。
停止する場合は、
Game_Map.prototype.updateEvents = function() {};
停止解除する場合は、
Game_Map.prototype.updateEvents = function() {
this.events().forEach(function(event) {
event.update();
});
this._commonEvents.forEach(function(event) {
event.update();
});
};
ただ、
このやり方だと他のプラグインを機能させなくなる可能性があるので、
スクリプトコマンドではなく、プラグイン化したほうがよさそうです。
(すでにあるかもしれませんが、需要があるなら作るかも?)
次に、ぼかしですが、
ver1.3より前の場合、
var f = new PIXI.filters.BlurFilter();
SceneManager._scene._spriteset._tilemap.filters = [f];
解除は、
SceneManager._scene._spriteset._tilemap.filters = null;
とすればいいです。
ただし、ゲームをcanvasモードで実行した場合は機能しません。
canvasモード時もぼかす処理は可能ですが、面倒なので……
そして、
ver1.3以降の場合ですが、
PIXI.tilemap.RectTileLayer.prototype.calculateBounds = function (){}
var f = new PIXI.filters.BlurFilter();
SceneManager._scene._spriteset._tilemap.filters = [f];
でいいと思ったのですが、
バグってるのか、よくわからないことになりました。
ちなみにメニュー時の背景は、
マップのスクリーンショットを撮って、それをぼかしている
という感じの処理なので、上で書いた処理とは違うことをやってます。
Re: 画面の停止とブラー効果の発動方法について
Posted: 2016年8月19日(金) 18:21
by pisk000
回答ありがとうございます。なるほどそんな感じなのですね。
私が探した限りではイベントの停止プラグインは見つけられませんでした。
verは1.3で制作してしまっているので無理そうです……
Re: 画面の停止とブラー効果の発動方法について
Posted: 2016年8月19日(金) 20:20
by ふしぎうさぎ
一応、
メニュー画面と似た処理でぼかすスクリプトを書いておきます。
これならv1.3でも動くはず。
ぼかす場合、
var snap = SceneManager.snap();
snap.blur();
var back = new Sprite(snap);
var set = SceneManager._scene._spriteset;
var index = set.getChildIndex(set._pictureContainer);
set.addChildAt(back, index);
this.__back = back;
解除する場合、
SceneManager._scene._spriteset.removeChild(this.__back);
前に書いたスクリプトとの違いは、
ぼかし処理をした時、マップのアニメーション(水面とか)が動かなくなることです。
ピクチャの奥にマップのスクショを配置して、マップを覆い隠してるので
Re: 画面の停止とブラー効果の発動方法について
Posted: 2016年8月19日(金) 20:50
by pisk000
教えて頂いたスクリプトで試したところ、目的の状況で正常にぼけました。ありがとうございます……!
Re: 画面の停止とブラー効果の発動方法について
Posted: 2016年8月19日(金) 20:57
by ふしぎうさぎ
スクリプトをちょっと修正
さっきのぼかすスクリプトだと、
コモンイベント化すると使えなくなるので
ぼかす場合、
var snap = SceneManager.snap();
snap.blur();
var back = new Sprite(snap);
var set = SceneManager._scene._spriteset;
set._pictureContainer.addChildAt(back, 0);
解除する場合、
SceneManager._scene._spriteset._pictureContainer.removeChildAt(0);
Re: 画面の停止とブラー効果の発動方法について
Posted: 2016年8月19日(金) 21:20
by pisk000
確認しました 修正ありがとうございます!