WOLF RPGエディター(ウディタ)/演出・システム【サイトトップへ戻る】
■マスク機能を使う
(更新:2023/04/15)


マスク処理の使い方などを紹介します。


ショートカット
■マスク機能とは?
■マスク機能の欠点
■ピクチャのCUT機能との比較
■マスク機能を使ってみる


  
■マスク機能とは?

マスク処理はイベントコマンド【エフェクト】にある機能です。



【マスク機能の基本説明とマスク機能のイベントコマンドを確認する】



マスク機能は、ピクチャやマップイベントなどを指定した画面位置のみで見えるようにする時に使います。

▼サンプルゲームの表示例


真ん中の巨大なキャラはピクチャで表示しており、このピクチャにはマスク機能ONを設定しています。

そして巨大なキャラが斜めに切り取られていますが、これはマスク画像の表示範囲を斜めに設定しているからです。



マスク画像の表示範囲を設定する時には、以下のような白黒の画像を読み込んで設定します。



上図の白黒画像をサンプルゲームの表示例に設定すると、以下のようになります。



白黒の画像を追加する事で、マスク画像の表示範囲を増やしたり減らしたりする事ができます。

▼左右に黒を追加した場合


なお、白黒の現在の設定状況は画面上には表示されないので、
制作者がどのように白黒を設定しているのかを記憶しておく必要があります。



マスク機能は、画像の一部だけを表示する時に使うため、
例えば下図のように顔グラフィックの画像全体が見えている状態では、マスク機能を使う必要はありません。



しかし下図のように、メッセージウィンドウの中で顔グラフィックが移動して出現する場合は、マスク機能が必要になります。


                  


ちなみにマスク機能を使わないと下図にようになります。




▲トップへ戻る▲


  
■マスク機能の欠点

マスク機能の欠点をまとめました。



▼異なる用途のマスク機能を2つ同時に使う事が難しい

異なる用途のマスク機能を2つ同時に使う事は難しいと言えます。

例えば顔グラフィックの表示にマスク機能を使っている場合…


サンプルゲームのマスク機能の表示例と一緒に顔グラフィックのマスク機能を使おうとすると、
下図のように顔グラフィックの所にも、サンプルゲームの表示例の背景が表示されてしまいます。



このような場合は、背景画像の顔グラフィックを表示する所を透明色で塗りつぶしておく必要があります。



また異なる用途のマスク機能を2つ同時に使う場合は…
■マスク機能:[マスクを全面[非表示]に塗る]
を実行すると、両方の黒の設定が消えてしまうため、
「マスクを全面[非表示]に塗る]」を使わないようにしたり、
「マスクを全面[非表示]に塗る]」を使った後に、両方の黒の設定をやり直すなどの工夫が必要になります。



▼白黒の画像を用意する必要がある

マスク機能では、白黒の画像ファイルを読み込んで、マスクONの画像が見える範囲を設定します。

そのため、マスクONの画像を表示するサイズや形に合わせて、白黒の画像ファイルを用意する必要があります。

また白黒画像の設定には、拡大縮小や回転などの機能が無いため、
白黒画像を徐々に大きくしたり、星型の白黒画像を回転させるような処理を実行したい時には、
拡大率や回転角度を変えた複数の白黒画像の準備して、
パラパラ漫画のように次々と白黒の画像ファイルを読み込んでいく必要があります。

▼8段階に大きさが変わる場合は8種類の白黒画像が必要です。




▼設定した白黒の位置は移動できない

マスク機能の白黒設定は、一度設定すると白黒の位置は移動できません。

そのため、下図のようにマスクの黒の位置が右から左へと移動する場合は、
マスクを全面[非表示]に塗る] → XY位置を変えて[マスクに表示範囲(黒)を追加]を実行
を繰り返して、徐々に黒の設定位置を変える必要があります。





▼マップイベントの並列実行では移動時に黒白の設定位置がずれる

以下の処理をサンプルゲームのサンプルマップAに設定。

【イベントコード表示】

■マップイベント

起動条件:並列実行

■ピクチャ表示:1 [左上]ウィンドウ「<SQUARE>」サイズ[Sys116:[読]画面サイズX,Sys117:[読]画面サイズY] X:0 Y:0 /
       0(0)フレーム / パターン 1 / 透 160 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 1
■マスク機能:[マスクを全面[表示]に塗る]
■変数操作+: V1-0[] = Ev3 の 画面X座標
■変数操作+: V1-1[] = Ev3 の 画面Y座標
■変数操作: V1-1[] -= Sys118:[読]タイルサイズ / 2
■マスク機能:[マスクに非表示範囲(白)を追加] =>[SystemFile/[Mask]Draw-_Circle120.png] XV1-0[] YV1-1[] (中心)

▼イベントを実行した時のゲーム画面


この処理は、画面全体をピクチャで暗くして、ピクチャのマスク機能をONにします。
そして立て看板の所で常にマスクの白を設定し、立て看板の所だけ、ピクチャが表示されないようにしています。

この状態で主人公が縦に移動すると、マスクの白黒の設定位置がずれます。

上へ移動中 停止中

このずれはマップイベントで設定した時に発生し、コモンイベントで設定した時には発生しません。

先ほどの…
【イベントコード表示】

■マップイベント

起動条件:並列実行

■ピクチャ表示:1 [左上]ウィンドウ「<SQUARE>」サイズ[Sys116:[読]画面サイズX,Sys117:[読]画面サイズY] X:0 Y:0 /
       0(0)フレーム / パターン 1 / 透 160 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 1
■マスク機能:[マスクを全面[表示]に塗る]
■変数操作+: V1-0[] = Ev3 の 画面X座標
■変数操作+: V1-1[] = Ev3 の 画面Y座標
■変数操作: V1-1[] -= Sys118:[読]タイルサイズ / 2
■マスク機能:[マスクに非表示範囲(白)を追加] =>[SystemFile/[Mask]Draw-_Circle120.png] XV1-0[] YV1-1[] (中心)
のマップイベントを削除して、同じ設定でコモンイベントに設定。
【イベントコード表示】

■コモンイベント

起動条件:並列実行(常時)

■ピクチャ表示:1 [左上]ウィンドウ「<SQUARE>」サイズ[Sys116:[読]画面サイズX,Sys117:[読]画面サイズY] X:0 Y:0 /
       0(0)フレーム / パターン 1 / 透 160 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 1
■マスク機能:[マスクを全面[表示]に塗る]
■変数操作+: V1-0[] = Ev3 の 画面X座標
■変数操作+: V1-1[] = Ev3 の 画面Y座標
■変数操作: V1-1[] -= Sys118:[読]タイルサイズ / 2
■マスク機能:[マスクに非表示範囲(白)を追加] =>[SystemFile/[Mask]Draw-_Circle120.png] XV1-0[] YV1-1[] (中心)

すると上へ移動して画面がスクロールしても、白の設定位置が変わりません。

上へ移動中 停止中

このような仕様があるため、マップイベントの位置に合わせて常に白黒を設定する場合は、
マップイベントの並列実行ではなく、コモンイベントの並列実行で処理する必要があります。


▲トップへ戻る▲


  
■ピクチャのCUT機能との比較

【ピクチャ表示】には「CUT」と言う機能があります。
【ピクチャのCUT機能の説明を見る】



このCUT機能を使う事で…

のような画像の一部だけを切り取って表示する事ができます。



しかし下図のように顔グラフィックが右下の方から移動して出てくる場合は…

CUT機能を使って表示しようとすると、
カットサイズを少しずつ変えながら何度も画像ファイルを読み込む必要があり、かなり手間がかかります。



またCUT機能の場合は、画像ファイルから直接切り取る必要があるため、
キャラチップの画像からピンポイントで取り取る位置やサイズを指定する必要があります。

▼赤枠の部分を指定して画像を読み込む必要がある


キャラチップは、画像サイズ(1キャラのサイズ)が固定では無いので、
キャラチップごとに切り取る位置やサイズを変える必要があり、イベント設定も難しくなります。



CUT機能は四角形でしか切り取る事ができないので、
サンプルゲームの表示例のような斜めのカットができません。



またサンプルゲームの表示例のように、徐々に表示サイズを広げたり、キャラ画像を左右に揺らしたりする表示は、
マスク機能を使った方が楽に設定する事ができます。



CUTよりもマスク機能の方が使い勝手が良いように思えますが、マスク機能には■マスク機能の欠点で書いたように、
異なる用途のマスク機能を2つ同時に使う事が難しい」などの欠点があるため、状況によってはCUT機能を含めて、
マスク機能以外の方法で処理した方が良い場合もあります。


▲トップへ戻る▲


  
■マスク機能を使ってみる

今回はサンプルゲームのサンプルマップAを使って、マップイベントが主人公の周りだけ表示されるように設定します。





白黒画像を準備してください。



上図の白黒画像を使う場合は、画像の上で右クリック→「名前を付けて画像を保存」を選択して画像をダウンロードし、
サンプルゲームのフォルダー「Picture」の中に設定してください。



コモンイベントに以下のイベントを設定してください。

【イベントコード表示】

■コモンイベント「マスク主人公周辺表示」

起動条件:並列実行(常時)

■変数操作+: CSelf10[X] = 主人公 の 画面X座標
■変数操作+: CSelf11[Y] = 主人公 の 画面Y座標
■変数操作: CSelf11[Y] -= Sys118:[読]タイルサイズ / 2
■マスク機能:[マスクを全面[非表示]に塗る]
■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_192.png] XCSelf10[X] YCSelf11[Y] (中心)





マップ内に以下のマップイベントに設定してください。

【イベントコード表示】

■マップイベント「マスクON」

起動条件:並列実行

■マスク機能:[次IDのキャラのマスクONにする] =>ID 0 〜 19
■イベントの一時消去:このEv (0フレーム)




以上で設定完了です。

テストプレイを実行して、動作確認を行ってください。

なお、テストプレイの際に、ゲーム開始位置をサンプルマップAにしておくと、より素早く動作確認を行う事ができます。





▼追加設定:常に見えているマップイベントを設定

上記の設定では、全てのマップイベントが見えなくなりますが、
追加設定を行う事で宝箱などのマップイベントが常に見えている状態にする事もできます。

【イベントコード表示】

■マップイベント「マスクON」

起動条件:並列実行

■マスク機能:[次IDのキャラのマスクONにする] =>ID 0 〜 19
■マスク機能:[次IDのキャラのマスクを解除] =>ID 3
■マスク機能:[次IDのキャラのマスクを解除] =>ID 10
■マスク機能:[次IDのキャラのマスクを解除] =>ID 12
■マスク機能:[次IDのキャラのマスクを解除] =>ID 15
■イベントの一時消去:このEv (0フレーム)



▼追加設定:特定の条件で見えるようにする

例えば特定のアイテムを持っていると、見えなかったマップイベントが見えるようになる設定もできます。

以下はアイテム「霊感の鈴」を持っている時に、マスク機能がONのマップイベントが見えるようになるイベント設定です。

【イベントコード表示】

■コモンイベント「マスク主人公周辺表示」

起動条件:並列実行(常時)

■変数操作+: CSelf10[X] = 主人公 の 画面X座標
■変数操作+: CSelf11[Y] = 主人公 の 画面Y座標
■変数操作: CSelf11[Y] -= Sys118:[読]タイルサイズ / 2
■マスク機能:[マスクを全面[非表示]に塗る]
■イベントの挿入[名]: CSelf12[所持数] = ["▲アイテム所持数取得"] <コモンEv 17> / 24:霊感の鈴
■条件分岐(変数): 【1】 CSelf12[所持数] が 0 以下
-◇分岐: 【1】 [ CSelf12[所持数] が 0 以下 ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇
■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_192.png] XCSelf10[X] YCSelf11[Y] (中心)

アイテム取得


▲トップへ戻る▲



◎関連ページ

◆マスク機能を使う
┣◆【マスク使用例】戦闘中にカットインを表示
┣◆【マスク使用例】場所移動時の演出
┣◆【マスク使用例】複数の黒マスクを同時に設定して画面全体を黒マスクに変える
┣◆【マスク使用例】光を当ててマップイベントを表示(懐中電灯)
┣◆【マスク使用例】マウスポインタの位置にマスクを設定(拡大鏡・射撃など)
┗◆【マスク使用例】歩行グラフィックを顔グラフィックに使う

◆イベントコマンド【エフェクト】(マスクのイベントコマンド)

YADOT-WOLFトップ  気紛れな空間へ戻る  メール