[解決済]画面の停止とブラー効果の発動方法について

pisk000
記事: 11
登録日時: 2016年8月15日(月) 16:35

[解決済]画面の停止とブラー効果の発動方法について

投稿記事by pisk000 » 2016年8月19日(金) 16:11

いつもお世話になっております。
ツクールmvの仕様として、メニューを開いたり、アイテム、セーブ画面などを開く際、マップ上のイベントなどを一時停止した後に
ブラーを掛けてぼかし、その上にメニュー等のウィンドウが展開されるようになっていると思うのですが、

この処理をマップ上の任意のタイミング(「文章の表示」や「ピクチャの表示」を行う際など)で、
スクリプトコマンドなどを使って発動・解除させる方法 はありますでしょうか?

恐らく複雑な処理はしていないと思うのですが、検索をかけたり本体のJsを見るなどしてもスクリプトの知識が無いため
理解できませんでした。

詳しい方どなたかご教示いただければ幸いです。。
最後に編集したユーザー pisk000 on 2016年8月20日(土) 01:48 [ 編集 2 回目 ]

ふしぎうさぎ
記事: 6
登録日時: 2016年8月18日(木) 06:32
連絡を取る:

Re: 画面の停止とブラー効果の発動方法について

投稿記事by ふしぎうさぎ » 2016年8月19日(金) 17:51

簡単に調べてみましたが。

ツクールのバージョンが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];

でいいと思ったのですが、
バグってるのか、よくわからないことになりました。


ちなみにメニュー時の背景は、
 マップのスクリーンショットを撮って、それをぼかしている
という感じの処理なので、上で書いた処理とは違うことをやってます。
pisk000
記事: 11
登録日時: 2016年8月15日(月) 16:35

Re: 画面の停止とブラー効果の発動方法について

投稿記事by pisk000 » 2016年8月19日(金) 18:21

回答ありがとうございます。なるほどそんな感じなのですね。

私が探した限りではイベントの停止プラグインは見つけられませんでした。

verは1.3で制作してしまっているので無理そうです……
ふしぎうさぎ
記事: 6
登録日時: 2016年8月18日(木) 06:32
連絡を取る:

Re: 画面の停止とブラー効果の発動方法について

投稿記事by ふしぎうさぎ » 2016年8月19日(金) 20:20

一応、
メニュー画面と似た処理でぼかすスクリプトを書いておきます。
これなら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);


前に書いたスクリプトとの違いは、
ぼかし処理をした時、マップのアニメーション(水面とか)が動かなくなることです。
ピクチャの奥にマップのスクショを配置して、マップを覆い隠してるので
pisk000
記事: 11
登録日時: 2016年8月15日(月) 16:35

Re: 画面の停止とブラー効果の発動方法について

投稿記事by pisk000 » 2016年8月19日(金) 20:50

教えて頂いたスクリプトで試したところ、目的の状況で正常にぼけました。ありがとうございます……!
ふしぎうさぎ
記事: 6
登録日時: 2016年8月18日(木) 06:32
連絡を取る:

Re: 画面の停止とブラー効果の発動方法について

投稿記事by ふしぎうさぎ » 2016年8月19日(金) 20:57

スクリプトをちょっと修正

さっきのぼかすスクリプトだと、
コモンイベント化すると使えなくなるので

ぼかす場合、
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);
pisk000
記事: 11
登録日時: 2016年8月15日(月) 16:35

Re: 画面の停止とブラー効果の発動方法について

投稿記事by pisk000 » 2016年8月19日(金) 21:20

確認しました 修正ありがとうございます!

“MV:質問” へ戻る