WOLF RPGエディター(ウディタ)/演出・システム【サイトトップへ戻る】
■【マスク使用例】複数の黒マスクを同時に設定して画面全体を黒マスクに変える
(更新:2023/04/15)


マスク用の黒を複数同時に設定して、画面全体を黒の設定に変えます。


ショートカット
■設定前の補足説明
■マスク用の黒の点を複数設定して画面全体を黒に変える
■マスク用の黒の円形が複数広がって画面全体を黒に変える
■マスク用の黒の四角形を複数設定して画面全体を黒に変える

マスク機能に使用に関する基本的な説明は別ページにあります。
【マスク機能の使用に関する説明ページを開く】


  
■設定前の補足説明

当ページの処理は、オープニングなどの強制実行イベントのシーンの切り替えやゲームオーバーの表示、
アドベンチャーゲーム(サウンドノベル)の場所移動や立ち絵のキャラ表示などの利用を想定しています。



当ページのコモンイベントの処理は「画面全体をマスクの黒設定にするだけ」なので、
コモンイベントを呼び出す前に画面全体を白に変える設定ピクチャなどのマスク機能をONにする設定が必要です。



処理内容によっては、可変DB[16:× お店一時処理用]を使っています。

もしも当ページのコモンイベントの実行中に可変DB[16:× お店一時処理用]を他の用途で使用している場合は、
当ページのコモンイベントで使用する可変DBを可変DB[15:×┗ お宝リスト]などに変えるか、
新規で可変DBを作成して、その可変DBを使うようにイベント設定を変える必要があります。



当ページの処理は若干難しいので、単にコモン素材として使う分には問題ありませんが、
改造して使う場合は、処理構造を理解した上でご利用ください。


▲トップへ戻る▲


  
■マスク用の黒の点を複数設定して画面全体を黒に変える

同じ大きさの黒の画像を大量に設置して、画面全体を黒に変えます。




【クリックして今回のイベント設定で使用する画像をダウンロード】

mask_kuro_16.png

今回用意した画像は「丸型直径16ピクセル」ですが、処理の最初に黒の画像サイズを調べて処理するので、
別の画像サイズにしても問題ありません。

但し可変DBを使っているため、あまりに画像サイズを小さくすると、可変DBのデータ数の上限「10000」を超えてしまいます。
もしも10000を超える場合は、デバッグウィンドウが表示されて、処理が強制終了します。

なお、黒の画像サイズを変える場合は偶数のピクセル値にしてください。



黒の図形は、円形・楕円形の他に、ひし形などにもできます。

一応四角形にもできますが、円形を想定して処理しているため、四角形同士が重なって設置されます。



黒の配置は下図のように、横は直径の長さごとに置き、縦は半径の長さごとに交互に並ぶように設定します。





コモンイベントを呼び出す際、「黒設置速度(1-9)」を設定します。

設定値「1」に対して「9」の場合は9倍の速度で黒が埋まっていきます。



黒の設置では可変DB[16:× お店一時処理用]を使って処理します。

まず黒の設置場所ごとに番号が付け、その番号を可変DB[16]項目[1]に保存します。

仮に黒の設置場所が1000箇所あった場合は、可変DB[16]データID[0〜999]項目[1]にデータIDと同じ番号を設定します。

そして乱数「0〜999」を実行して、最初の黒の設置場所を決定します。

仮に「450番」だった場合は、左上の設置場所から数えて450番の位置に黒を設置し、データID[450]を削除します。

データID[450]を削除すると、データID[451]以降が「451→450」と1つずつずれます。

そして次の乱数では「0〜998」を実行し、次の黒の設置場所を決定します。

このように処理する事で「乱数を設定 → 既に設置済みだった → 乱数をやり直し」と言った無駄な処理を省く事ができます。

【乱数で一度出力した値を二重に出力させないのページを開く】



【イベントコード表示】【コモン出力ファイル】

■コモンイベント「マスク黒点複数」

起動条件:呼び出しのみ

入力の数 / 結果を返す
設定 名前 初期値
数値1 黒設置速度 3

▼ 事前に「全面白」やマスクONのピクチャ表示を実行しておく。
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■変数操作: CSelf90[ピクチャ番号] = -50000 + 0
■文字列操作:CSelf5[黒ファイルアドレス] = "Picture/mask_kuro_16.png"
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■変数操作: CSelf0[黒設置速度] 下限= 1 + 0
▼ ■■■■■■■■■■黒の画像サイズを取得
■ピクチャ表示:CSelf90[ピクチャ番号] [左上]ファイル(CSelf5[黒ファイルアドレス]) X:0 Y:0 / 0(0)フレーム /
       パターン 1 / 透 0 / 通常 / 角 3 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作+: CSelf10[黒:横直径サイズ] = ピクチャ:CSelf90[ピクチャ番号] の 画像サイズ(横)
■変数操作: CSelf12[黒:横半径サイズ] = CSelf10[黒:横直径サイズ] / 2
■変数操作+: CSelf11[黒:縦直径サイズ] = ピクチャ:CSelf90[ピクチャ番号] の 画像サイズ(縦)
■変数操作: CSelf13[黒:縦半径サイズ] = CSelf11[黒:縦直径サイズ] / 2
■変数操作: CSelf10[黒:横直径サイズ]〜CSelf13[黒:縦半径サイズ] /= Sys119:[読]基本画面倍率x[1-3] + 0
▼ ■■■■■■■■■■黒を設置する数
■変数操作: CSelf15[設置数:横] = Sys116:[読]画面サイズX / CSelf10[黒:横直径サイズ]
■変数操作: CSelf30[計算用] = Sys116:[読]画面サイズX % CSelf10[黒:横直径サイズ]
■変数操作: CSelf15[設置数:横] += CSelf30[計算用] / CSelf30[計算用]
■変数操作: CSelf16[設置数:縦] = Sys117:[読]画面サイズY / CSelf13[黒:縦半径サイズ]
■変数操作: CSelf30[計算用] = Sys117:[読]画面サイズY % CSelf13[黒:縦半径サイズ]
■変数操作: CSelf16[設置数:縦] += CSelf30[計算用] / CSelf30[計算用]
■変数操作: CSelf15[設置数:横]〜CSelf16[設置数:縦] += 1 + 0
■変数操作: CSelf17[設置数:総数] = CSelf15[設置数:横] * CSelf16[設置数:縦]
■条件分岐(変数): 【1】 CSelf17[設置数:総数] が 10001 以上
-◇分岐: 【1】 [ CSelf17[設置数:総数] が 10001 以上 ]の場合↓
|▼ 可変DBのデータ数の上限「10000」を超えた場合 → 処理強制終了
|■変数操作: CSelf10[黒:横直径サイズ]〜CSelf11[黒:縦直径サイズ] /= 2 + 0
|■変数操作: CSelf10[黒:横直径サイズ]〜CSelf11[黒:縦直径サイズ] *= 2 + 0
|■ループ開始
||■条件分岐(変数): 【1】 CSelf10[黒:横直径サイズ] が CSelf11[黒:縦直径サイズ] と同じ
          【2】 CSelf10[黒:横直径サイズ] が CSelf11[黒:縦直径サイズ] 未満
||-◇分岐: 【1】 [ CSelf10[黒:横直径サイズ] が CSelf11[黒:縦直径サイズ] と同じ ]の場合↓
|||■変数操作: CSelf10[黒:横直径サイズ]〜CSelf11[黒:縦直径サイズ] += 2 + 0
|||■
||-◇分岐: 【2】 [ CSelf10[黒:横直径サイズ] が CSelf11[黒:縦直径サイズ] 未満 ]の場合↓
|||■変数操作: CSelf10[黒:横直径サイズ] += 2 + 0
|||■
||-◇上記以外
|||■変数操作: CSelf11[黒:縦直径サイズ] += 2 + 0
|||■
||◇分岐終了◇
||■変数操作: CSelf13[黒:縦半径サイズ] = CSelf11[黒:縦直径サイズ] / 2
||■変数操作: CSelf10[黒:横直径サイズ]〜CSelf11[黒:縦直径サイズ] /= Sys119:[読]基本画面倍率x[1-3] + 0
||■変数操作: CSelf15[設置数:横] = Sys116:[読]画面サイズX / CSelf10[黒:横直径サイズ]
||■変数操作: CSelf30[計算用] = Sys116:[読]画面サイズX % CSelf10[黒:横直径サイズ]
||■変数操作: CSelf15[設置数:横] += CSelf30[計算用] / CSelf30[計算用]
||■変数操作: CSelf16[設置数:縦] = Sys117:[読]画面サイズY / CSelf13[黒:縦半径サイズ]
||■変数操作: CSelf30[計算用] = Sys117:[読]画面サイズY % CSelf13[黒:縦半径サイズ]
||■変数操作: CSelf16[設置数:縦] += CSelf30[計算用] / CSelf30[計算用]
||■変数操作: CSelf15[設置数:横]〜CSelf16[設置数:縦] += 1 + 0
||■変数操作: CSelf17[設置数:総数] = CSelf15[設置数:横] * CSelf16[設置数:縦]
||■条件分岐(変数): 【1】 CSelf17[設置数:総数] が 10000 以下
||-◇分岐: 【1】 [ CSelf17[設置数:総数] が 10000 以下 ]の場合↓
|||■ループ中断
|||■
||◇分岐終了◇
||■
|◇ループここまで◇◇
|■条件分岐(変数): 【1】 CSelf10[黒:横直径サイズ] が CSelf11[黒:縦直径サイズ] と同じ
|-◇分岐: 【1】 [ CSelf10[黒:横直径サイズ] が CSelf11[黒:縦直径サイズ] と同じ ]の場合↓
||■デバッグ文:黒の画像サイズが小さ過ぎて処理する事ができません。\n
        黒の画像サイズを直径「\cself[10]ピクセル以上」にしてください。

||■
|-◇上記以外
||■デバッグ文:黒の画像サイズが小さ過ぎて処理する事ができません。\n
        黒の画像サイズを「横\cself[10]×縦\cself[11]ピクセル以上」にしてください。

||■
|◇分岐終了◇
|●ラベル「強制終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■位置番号を登録
■変数操作: CSelf35[データID] = -1 + 0
■回数付きループ [ CSelf17[設置数:総数] ]回
|■変数操作: CSelf35[データID] += 1 + 0
|■可変DB書込:DB[× お店一時処理用 : CSelf35[データID] : 1](16: - :販売アイテムコード) = CSelf35[データID]
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■処理速度を設定
■変数操作: CSelf20[黒:ループ回数] = CSelf17[設置数:総数] / CSelf0[黒設置速度]
■変数操作: CSelf20[黒:ループ回数] = CSelf0[黒設置速度] + 0
■変数操作: CSelf20[黒:ループ回数] *= CSelf15[設置数:横] / 4
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■黒設定
■変数操作: CSelf21[黒:データID数] = CSelf17[設置数:総数] + 0
■変数操作: CSelf22[黒:乱数最大値] = CSelf17[設置数:総数] - 1
■ループ開始
|■回数付きループ [ CSelf20[黒:ループ回数] ]回
||■条件分岐(変数): 【1】 CSelf21[黒:データID数] が 0 以下
||-◇分岐: 【1】 [ CSelf21[黒:データID数] が 0 以下 ]の場合↓
|||■ループ中断
|||■
||◇分岐終了◇
||■変数操作: CSelf23[黒:乱数] = 0 〜 CSelf22[黒:乱数最大値]
||■DB読込(可変):CSelf24[黒:位置番号] = 可変DB[× お店一時処理用:CSelf23[黒:乱数]:1](16:-:販売アイテムコード)
||■DBからデータを抜き取り: 可変DB[× お店一時処理用:CSelf23[黒:乱数]] から [ 1 ]個のデータを抜き取り
||■変数操作: CSelf25[黒:横位置] = CSelf24[黒:位置番号] % CSelf15[設置数:横]
||■変数操作: CSelf26[黒:縦位置] = CSelf24[黒:位置番号] / CSelf15[設置数:横]
||■変数操作: CSelf30[計算用] = CSelf26[黒:縦位置] % 2
||■変数操作: CSelf25[黒:横位置] *= CSelf10[黒:横直径サイズ] + 0
||■変数操作: CSelf25[黒:横位置] -= CSelf12[黒:横半径サイズ] * CSelf30[計算用]
||■変数操作: CSelf26[黒:縦位置] *= CSelf13[黒:縦半径サイズ] + 0
||■マスク機能:[マスクに表示範囲(黒)を追加] =>[\cself[5]] XCSelf25[黒:横位置] YCSelf26[黒:縦位置] (中心)
||■変数操作: CSelf21[黒:データID数]〜CSelf22[黒:乱数最大値] -= 1 + 0
||■
|◇ループここまで◇◇
|■条件分岐(変数): 【1】 CSelf21[黒:データID数] が 0 以下
|-◇分岐: 【1】 [ CSelf21[黒:データID数] が 0 以下 ]の場合↓
||■ループ中断
||■
|◇分岐終了◇
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
●ラベル地点「強制終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■文字列操作:CSelf5[黒ファイルアドレス] = ""
■マスク機能:[マスクを全面[表示]に塗る]



マップイベントにコモンイベント「マスク黒点複数」を呼び出すイベントを設定してください。

下記の設定は、マップイベントを実行すると、マスク処理でサンプルゲームのタイトル画像を表示し、
決定キーかキャンセルキーを押すと、タイトル画像が消える処理になります。

【イベントコード表示】

■マップイベント

起動条件:決定キーで実行

■マスク機能:[マスクを全面[非表示]に塗る]
■ピクチャ表示:1 [中心]ファイル「SystemFile/TitleGraphic.png」 [左上X:0 Y:0 + 右上X:Sys116:[読]画面サイズX Y:0 +
       左下X:0 Y:Sys117:[読]画面サイズY + 右下X:Sys116:[読]画面サイズX Y:Sys117:[読]画面サイズY] /
       0(0)フレーム / パターン 1 / 透 255 / 通常 カラー R[100] G[100] B[100]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 1
■イベントの挿入[名]: ["マスク黒点複数"] <コモンEv 215> / 3
■キー入力:このEvのセルフ変数0 / [入力待ち] 決定(10) キャンセル(11)
■ピクチャ消去:1 / 10(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■マスク用の黒の円形が複数広がって画面全体を黒に変える

黒の円形が複数同時に広がって、画面全体を黒に変えます。




黒の円形を設定する位置は、ランダムで設定するため、実行するごとに円の発生場所が異なります。



今回の処理では、黒を設定する担当区域を指定して、その担当区域ごとに1つの黒の円が設定されるように処理します。

担当区域は下図の青線が交わる位置を中心とし、中心から半径128ピクセルの範囲を1つの黒が塗りつぶしを担当します。





担当区域を全て塗りつぶすには、最大で直径512ピクセルまで大きくする必要があります。



今回の処理では、中心から「0〜99ピクセル」の範囲で黒の円形を設定するので、
最大値の直径512ピクセルまで大きくしなくても、担当区域を全て黒に塗りつぶす事ができます。



黒の円のXY位置が決まったら、担当区域の中心からの距離担当区域の半径を足して、
担当区域を全て黒で塗りつぶすのに必要な最低限の円の大きさを算出します。

例えば下図の場合は、担当区域の中心から「78ピクセル」の位置に黒のXY位置があります。
そのため、担当区域を全て黒に塗りつぶすには「78+128=半径206ピクセル」が必要になります。
今回の処理は、半径8ピクセルずつ黒の円が大きくなるので、8ピクセルの倍数で206ピクセル以上にするには、
「8×26=半径208ピクセル(直径416ピクセル)」にする必要があります。



担当区域を全て黒に塗りつぶしても、直径512ピクセルになるまでは、黒の円が大きくなり続けます。
これは他の黒の担当区域の処理が終わっていない状態(まだ他の黒の円が大きくなり続けている状態)で、
一部の黒の円を大きくする処理を止めると、不自然に見えるからです。

全ての担当区域で黒の塗りつぶしが完了したら、その時点で処理が終了します。
必ずしも全ての担当区域で直径512ピクセルまで大きくする必要が無いため、
「画面全体が既に黒になっているのに、まだ処理が続く」と言った無駄な処理が出来る限り少なくなるようにしています。



ゲーム画面のサイズが[320×240[x2]]の場合は、黒のXY設定位置は2分の1(担当区域=半径64ピクセル)になります。



【クリックして今回のイベント設定で使用する画像をダウンロード】



【イベントコード表示】【コモン出力ファイル】

■コモンイベント「マスク黒円形複数」

起動条件:呼び出しのみ

入力の数 / 結果を返す
設定 名前 初期値
数値1 ウェイト 3

▼ 事前に「全面白」やマスクONのピクチャ表示を実行しておく。
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■変数操作: CSelf0[ウェイト] 下限= 1 + 0
▼ ■■■■■■■■■■■■■■■■■■■■円を配置する区域の基本設定
■変数操作: CSelf10[1区サイズ] = 256 / Sys119:[読]基本画面倍率x[1-3]
■変数操作: CSelf11[1区サイズ÷2] = CSelf10[1区サイズ] / 2
■変数操作: CSelf12[設置数:横] = Sys116:[読]画面サイズX / CSelf10[1区サイズ]
■変数操作: CSelf13[設置数:縦] = Sys117:[読]画面サイズY / CSelf11[1区サイズ÷2]
■変数操作: CSelf12[設置数:横] += 1 + 0
■変数操作: CSelf13[設置数:縦] += 2 + 0
▼ ■■■■■■■■■■■■■■■■■■■■円の配置
■変数操作: CSelf20[スタートX] = 0 + 0
■変数操作: CSelf21[スタートY] = Sys117:[読]画面サイズY % CSelf10[1区サイズ]
■変数操作: CSelf21[スタートY] /= -2 + 0
■変数操作: CSelf38[縦設置完了数] = 0 + 0
■変数操作: CSelf41[黒:サイズ] = 0 + 0
■変数操作: CSelf43[黒:加算サイズ] = 16 + 0
■ループ開始
|■変数操作: CSelf22[設定中心X] = CSelf20[スタートX] + 0
|■変数操作: CSelf23[設定中心Y] = CSelf21[スタートY] + 0
|■回数付きループ [ CSelf12[設置数:横] ]回
||■変数操作: CSelf30[設置:角度] = 0 〜 3599
||■変数操作: CSelf31[設置:距離] = 0 〜 99
||■変数操作: CSelf32[設置:COS] = cos[x1000]←角度[x10] = CSelf30[設置:角度] + 0
||■変数操作: CSelf33[設置:SIN] = sin[x1000]←角度[x10] = CSelf30[設置:角度] + 0
||■変数操作: CSelf40[黒:開始ウェイト] = 0 〜 19
||■変数操作: CSelf42[黒:最大サイズ] = CSelf31[設置:距離] + 128
||■変数操作: CSelf42[黒:最大サイズ] *= 2 + 0
||■変数操作: CSelf44[黒:X] = CSelf32[設置:COS] * CSelf31[設置:距離]
||■変数操作: CSelf45[黒:Y] = CSelf33[設置:SIN] * CSelf31[設置:距離]
||■変数操作: CSelf44[黒:X]〜CSelf45[黒:Y] /= 1000 * Sys119:[読]基本画面倍率x[1-3]
||■変数操作: CSelf44[黒:X] += CSelf22[設定中心X] + 0
||■変数操作: CSelf45[黒:Y] += CSelf23[設定中心Y] + 0
||▼ ウェイト|白黒サイズ|白黒最大サイズ|加算サイズ|白黒X|白黒Y
||■文字列操作:CSelf7[黒データ] += "\cself[40]|\cself[41]|\cself[42]|\cself[43]|\cself[44]|\cself[45]\n"
||■変数操作: CSelf22[設定中心X] += CSelf10[1区サイズ] + 0
||■
|◇ループここまで◇◇
|■変数操作: CSelf38[縦設置完了数] += 1 + 0
|■条件分岐(変数): 【1】 CSelf38[縦設置完了数] が CSelf13[設置数:縦] 以上
          【2】 CSelf20[スタートX] が 0 と同じ
|-◇分岐: 【1】 [ CSelf38[縦設置完了数] が CSelf13[設置数:縦] 以上 ]の場合↓
||■ループ中断
||■
|-◇分岐: 【2】 [ CSelf20[スタートX] が 0 と同じ ]の場合↓
||■変数操作: CSelf20[スタートX]〜CSelf21[スタートY] += CSelf11[1区サイズ÷2] + 0
||■
|-◇上記以外
||■変数操作: CSelf20[スタートX] -= CSelf11[1区サイズ÷2] + 0
||■変数操作: CSelf21[スタートY] += CSelf11[1区サイズ÷2] + 0
||■
|◇分岐終了◇
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■■■■■■■■■■■黒設定
■ループ開始
|■文字列操作:CSelf8[黒処理済みデータ] = ""
|■変数操作: CSelf48[全て最大以上] = 1 + 0
|■ループ開始
||■条件分岐(文字): 【1】 CSelf7[黒データ]が "" と同じ
||-◇分岐: 【1】 [ CSelf7[黒データ] "" と同じ ]の場合↓
|||■文字列操作:CSelf7[黒データ] = CSelf8[黒処理済みデータ]
|||■ループ中断
|||■
||◇分岐終了◇
||■文字列操作:CSelf9[1行切り出し用] =<上1行切出> CSelf7[黒データ]
||■変数操作: CSelf40[黒:開始ウェイト] = CSelf9[1行切り出し用] + 0
||■変数操作: CSelf40[黒:開始ウェイト] -= 1 + 0
||■変数操作: CSelf40[黒:開始ウェイト] 下限= 0 + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf41[黒:サイズ] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf42[黒:最大サイズ] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■条件分岐(変数): 【1】 CSelf40[黒:開始ウェイト] が 1 以上
||-◇分岐: 【1】 [ CSelf40[黒:開始ウェイト] が 1 以上 ]の場合↓
|||■文字列操作:CSelf8[黒処理済みデータ] += "\cself[40]|\cself[41]|\cself[42]|\cself[9]\n"
|||■条件分岐(変数): 【1】 CSelf41[黒:サイズ] が CSelf42[黒:最大サイズ] 未満
|||-◇分岐: 【1】 [ CSelf41[黒:サイズ] が CSelf42[黒:最大サイズ] 未満 ]の場合↓
||||■変数操作: CSelf48[全て最大以上] = 0 + 0
||||■
|||◇分岐終了◇
|||■ループ開始へ戻る
|||■
||◇分岐終了◇
||■変数操作: CSelf40[黒:開始ウェイト] = CSelf0[ウェイト] + 0
||■変数操作: CSelf43[黒:加算サイズ] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf44[黒:X] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf45[黒:Y] = CSelf9[1行切り出し用] + 0
||■条件分岐(変数): 【1】 CSelf41[黒:サイズ] が 512 以上
          【2】 CSelf41[黒:サイズ] が CSelf42[黒:最大サイズ] 未満
||-◇分岐: 【1】 [ CSelf41[黒:サイズ] が 512 以上 ]の場合↓
|||■ループ開始へ戻る
|||■
||-◇分岐: 【2】 [ CSelf41[黒:サイズ] が CSelf42[黒:最大サイズ] 未満 ]の場合↓
|||■変数操作: CSelf48[全て最大以上] = 0 + 0
|||■
||◇分岐終了◇
||■変数操作: CSelf41[黒:サイズ] += CSelf43[黒:加算サイズ] + 0
||■文字列操作:CSelf5[黒ファイルアドレス] = "Picture/mask_kuro_\cself[41].png"
||■マスク機能:[マスクに表示範囲(黒)を追加] =>[\cself[5]] XCSelf44[黒:X] YCSelf45[黒:Y] (中心)
||■文字列操作:CSelf8[黒処理済みデータ] += "\cself[40]|\cself[41]|\cself[42]|\cself[43]|\cself[44]|\cself[45]\n"
||■
|◇ループここまで◇◇
|■条件分岐(変数): 【1】 CSelf48[全て最大以上] が 1 と同じ
|-◇分岐: 【1】 [ CSelf48[全て最大以上] が 1 と同じ ]の場合↓
||■ループ中断
||■
|◇分岐終了◇
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■文字列操作:CSelf7[黒データ] = ""
■文字列操作:CSelf8[黒処理済みデータ] = ""
■文字列操作:CSelf9[1行切り出し用] = ""
■文字列操作:CSelf5[黒ファイルアドレス] = ""
■マスク機能:[マスクを全面[表示]に塗る]



マップイベントにコモンイベント「マスク黒円形複数」を呼び出すイベントを設定してください。

下記の設定は、マップイベントを実行すると、マスク処理でサンプルゲームのタイトル画像を表示し、
決定キーかキャンセルキーを押すと、タイトル画像が消える処理になります。

【イベントコード表示】

■マップイベント

起動条件:決定キーで実行

■マスク機能:[マスクを全面[非表示]に塗る]
■ピクチャ表示:1 [中心]ファイル「SystemFile/TitleGraphic.png」 [左上X:0 Y:0 + 右上X:Sys116:[読]画面サイズX Y:0 +
       左下X:0 Y:Sys117:[読]画面サイズY + 右下X:Sys116:[読]画面サイズX Y:Sys117:[読]画面サイズY] /
       0(0)フレーム / パターン 1 / 透 255 / 通常 カラー R[100] G[100] B[100]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 1
■イベントの挿入[名]: ["マスク黒円形複数"] <コモンEv 215> / 3
■キー入力:このEvのセルフ変数0 / [入力待ち] 決定(10) キャンセル(11)
■ピクチャ消去:1 / 10(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■マスク用の黒の四角形を複数設定して画面全体を黒に変える

画面上に四角形の区画を作り、区画ごとに黒の線を徐々に足して区画を埋め、画面全体を黒に変えます。

▼区画ごとに左から徐々にマスクの黒を足していった場合

▼区画を色分けするとこんな感じ


区画はゲーム画面の中央を基点に、上下対称、左右対称に並ぶように設定しています。



【クリックして今回のイベント設定で使用する画像をダウンロード】

今回用意した画像は「64×4ピクセル」の縦型と横型の画像です。

縦型 mask_kaku_tate.png
横型 mask_kaku_yoko.png

黒の画像の厚みによって処理速度が変わるので、例えば「4ピクセル」から「8ピクセル」に変えると処理速度が2倍になります。

画像サイズを変える場合は偶数のピクセル値にしてください。



今回の処理では、事前にマスク用の黒画像をピクチャに読み込み、画像サイズを調べて四角形の区画サイズを決定します。

「縦型=4×64」「横型=96×4」などにすると、区画の形が横長の長方形になります。

▼「縦型=4×64」「横型=96×4」の場合の区画の分かれ方




コモンイベントを呼び出す際、「黒設置方法」「処理順」「次の処理開始」の3つを設定します。

この設定を組み合わせる事で、様々な表示方法が実行できます。



【イベントコード表示】【コモン出力ファイル】

■コモンイベント「マスク黒四角形複数」

起動条件:呼び出しのみ

入力の数 / 結果を返す
設定 名前 初期値 特殊指定
数値1 黒設置方法 1 [1]左から右
[2]右から左
[4]上から下
[8]下から上
[5]左から右+上から下
[6]右から左+上から下
[9]左から右+下から上
[10]右から左+下から上
数値2 処理順 -1 [-1]ランダム
[0]同時実行
[1]左から順番
[2]右から順番
[4]上から順番
[8]下から順番
[5]左上から順番
[6]右上から順番
[9]左下から順番
[10]右下から順番
数値3 次の処理開始 50 [100]全て表示したら次
[66]3分の2表示したら次
[50]2分の1表示したら次
[33]3分の1表示したら次
[25]4分の1表示したら次

■▼ 事前に「全面白」やマスクONのピクチャ表示を実行しておく。
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■変数操作: CSelf90[ピクチャ番号] = -50000 + 0
■文字列操作:CSelf5[黒縦長ファイルアドレス] = "Picture/mask_kaku_tate.png"
■文字列操作:CSelf6[黒横長ファイルアドレス] = "Picture/mask_kaku_yoko.png"
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■変数操作: CSelf2[次の処理開始] 下限= 1 + 0
▼ ■■■■■■■■■■黒の画像サイズを取得
■ピクチャ表示:CSelf90[ピクチャ番号] [左上]ファイル(CSelf5[黒縦長ファイルアドレス]) X:0 Y:0 / 0(0)フレーム /
       パターン 1 / 透 0 / 通常 / 角 3 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作+: CSelf10[黒縦長:横サイズ] = ピクチャ:CSelf90[ピクチャ番号] の 画像サイズ(横)
■変数操作+: CSelf11[黒縦長:縦サイズ] = ピクチャ:CSelf90[ピクチャ番号] の 画像サイズ(縦)
■ピクチャ表示:CSelf90[ピクチャ番号] [左上]ファイル(CSelf6[黒横長ファイルアドレス]) X:0 Y:0 / 0(0)フレーム /
       パターン 1 / 透 0 / 通常 / 角 3 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作+: CSelf12[黒横長:横サイズ] = ピクチャ:CSelf90[ピクチャ番号] の 画像サイズ(横)
■変数操作+: CSelf13[黒横長:縦サイズ] = ピクチャ:CSelf90[ピクチャ番号] の 画像サイズ(縦)
■ピクチャ消去:CSelf90[ピクチャ番号] / 0(0)フレーム
■変数操作: CSelf10[黒縦長:横サイズ]〜CSelf13[黒横長:縦サイズ] /= Sys119:[読]基本画面倍率x[1-3] + 0
▼ ■■■■■■■■■■ゲーム画面の幅に合わせて区画の個数を設定
■変数操作: CSelf20[区画数:横] = Sys116:[読]画面サイズX / CSelf12[黒横長:横サイズ]
■変数操作: CSelf15[計算用01] = Sys116:[読]画面サイズX % CSelf12[黒横長:横サイズ]
■変数操作: CSelf20[区画数:横] += CSelf15[計算用01] / CSelf15[計算用01]
■変数操作: CSelf21[区画数:縦] = Sys117:[読]画面サイズY / CSelf11[黒縦長:縦サイズ]
■変数操作: CSelf15[計算用01] = Sys117:[読]画面サイズY % CSelf11[黒縦長:縦サイズ]
■変数操作: CSelf21[区画数:縦] += CSelf15[計算用01] / CSelf15[計算用01]
▼ ■■■■■■■■■■奇数の場合は+1にして偶数にする
■変数操作: CSelf20[区画数:横] += CSelf20[区画数:横] % 2
■変数操作: CSelf21[区画数:縦] += CSelf21[区画数:縦] % 2
▼ ■■■■■■■■■■区画の総数を設定
■変数操作: CSelf22[区画:総数] = CSelf20[区画数:横] * CSelf21[区画数:縦]
▼ ■■■■■■■■■■左上のスタート位置を設定
■変数操作: CSelf40[区画:左端X]〜CSelf41[区画:左上X] = CSelf20[区画数:横] / 2
■変数操作: CSelf40[区画:左端X]〜CSelf41[区画:左上X] *= CSelf12[黒横長:横サイズ] * -1
■変数操作: CSelf40[区画:左端X]〜CSelf41[区画:左上X] += Sys116:[読]画面サイズX / 2
■変数操作: CSelf42[区画:左上Y] = CSelf21[区画数:縦] / 2
■変数操作: CSelf42[区画:左上Y] *= CSelf11[黒縦長:縦サイズ] * -1
■変数操作: CSelf42[区画:左上Y] += Sys117:[読]画面サイズY / 2
▼ ■■■■■■■■■■開始XY位置と1回の処理の黒の増減量
■変数操作: CSelf43[区画:左右X位置]〜CSelf46[区画:上下増減] = 0 + 0
■条件分岐(変数): 【1】 CSelf0[黒設置方法] が 1 のビットを満たす 【2】 CSelf0[黒設置方法] が 2 のビットを満たす
-◇分岐: 【1】 [ CSelf0[黒設置方法] が 1 のビットを満たす ]の場合↓
|▼ 黒設置方法:左から右
|■変数操作: CSelf45[区画:左右増減] = CSelf10[黒縦長:横サイズ] + 0
|■
-◇分岐: 【2】 [ CSelf0[黒設置方法] が 2 のビットを満たす ]の場合↓
|▼ 黒設置方法:右から左
|■変数操作: CSelf43[区画:左右X位置] = CSelf12[黒横長:横サイズ] - CSelf10[黒縦長:横サイズ]
|■変数操作: CSelf45[区画:左右増減] = CSelf10[黒縦長:横サイズ] * -1
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf0[黒設置方法] が 4 のビットを満たす 【2】 CSelf0[黒設置方法] が 8 のビットを満たす
-◇分岐: 【1】 [ CSelf0[黒設置方法] が 4 のビットを満たす ]の場合↓
|▼ 黒設置方法:上から下
|■変数操作: CSelf46[区画:上下増減] = CSelf13[黒横長:縦サイズ] + 0
|■
-◇分岐: 【2】 [ CSelf0[黒設置方法] が 8 のビットを満たす ]の場合↓
|▼ 黒設置方法:下から上
|■変数操作: CSelf44[区画:上下Y位置] = CSelf11[黒縦長:縦サイズ] - CSelf13[黒横長:縦サイズ]
|■変数操作: CSelf46[区画:上下増減] = CSelf13[黒横長:縦サイズ] * -1
|■
◇分岐終了◇
▼ ■■■■■■■■■■1区画の処理時間
■変数操作: CSelf25[区画:1区処理時間] = CSelf12[黒横長:横サイズ] / CSelf10[黒縦長:横サイズ]
■変数操作: CSelf15[計算用01] = CSelf12[黒横長:横サイズ] % CSelf10[黒縦長:横サイズ]
■変数操作: CSelf25[区画:1区処理時間] += CSelf15[計算用01] / CSelf15[計算用01]
■変数操作: CSelf26[区画:上下1区処理時間] = CSelf11[黒縦長:縦サイズ] / CSelf13[黒横長:縦サイズ]
■変数操作: CSelf15[計算用01] = CSelf11[黒縦長:縦サイズ] % CSelf13[黒横長:縦サイズ]
■変数操作: CSelf26[区画:上下1区処理時間] += CSelf15[計算用01] / CSelf15[計算用01]
■変数操作: CSelf25[区画:1区処理時間] 下限= CSelf26[区画:上下1区処理時間] + 0
■変数操作: CSelf27[区画:次実行時間] = CSelf25[区画:1区処理時間] * CSelf2[次の処理開始]
■変数操作: CSelf27[区画:次実行時間] /= 100 + 0
■変数操作: CSelf27[区画:次実行時間] 下限= 1 + 0
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■黒データの文字列を設定
■可変DB書込:[タイプ × お店一時処理用(16) を初期化]
■文字列操作:CSelf7[白黒データ] = ""
■変数操作: CSelf30[区画:処理番号]〜CSelf32[区画:処理番号縦] = 0 + 0
■変数操作: CSelf33[区画:処理番号上] = CSelf20[区画数:横] * -1
■変数操作: CSelf34[区画:処理番号左] = -1 + 0
■回数付きループ [ CSelf22[区画:総数] ]回
|▼ ■■■■■■■■■■処理開始ウェイトをランダム設定(上と左の区画の開始ウェイトと一緒にしない)
|■条件分岐(変数): 【1】 CSelf1[処理順] が -1 と同じ 【2】 CSelf1[処理順] が 0 と同じ
|-◇分岐: 【1】 [ CSelf1[処理順] が -1 と同じ ]の場合↓
||▼ ランダム
||■変数操作: CSelf35[区画:上乱数]〜CSelf36[区画:左乱数] = -10 + 0
||■条件分岐(変数): 【1】 CSelf33[区画:処理番号上] が 0 以上
||-◇分岐: 【1】 [ CSelf33[区画:処理番号上] が 0 以上 ]の場合↓
|||■DB読込(可変): CSelf35[区画:上乱数] =
          可変DB[ × お店一時処理用 : CSelf33[区画:処理番号上] : 1 ] (16 : - : 販売アイテムコード)
|||■
||◇分岐終了◇
||■条件分岐(変数): 【1】 CSelf31[区画:処理番号横] が 1 以上
||-◇分岐: 【1】 [ CSelf31[区画:処理番号横] が 1 以上 ]の場合↓
|||■DB読込(可変): CSelf36[区画:左乱数] =
          可変DB[ × お店一時処理用 : CSelf34[区画:処理番号左] : 1 ] (16 : - : 販売アイテムコード)
|||■
||◇分岐終了◇
||■変数操作: CSelf60[黒:ウェイト] = 0 〜 4
||■条件分岐(変数): 【1】 CSelf60[黒:ウェイト] が CSelf35[区画:上乱数] と同じ
||-◇分岐: 【1】 [ CSelf60[黒:ウェイト] が CSelf35[区画:上乱数] と同じ ]の場合↓
|||■変数操作: CSelf60[黒:ウェイト] += 1 〜 2
|||■
||◇分岐終了◇
||■変数操作: CSelf60[黒:ウェイト] %= 5 + 0
||■条件分岐(変数): 【1】 CSelf60[黒:ウェイト] が CSelf36[区画:左乱数] と同じ
||-◇分岐: 【1】 [ CSelf60[黒:ウェイト] が CSelf36[区画:左乱数] と同じ ]の場合↓
|||■変数操作: CSelf60[黒:ウェイト] += 1 〜 2
|||■
||◇分岐終了◇
||■変数操作: CSelf60[黒:ウェイト] %= 5 + 0
||■可変DB書込:DB[× お店一時処理用:CSelf30[区画:処理番号]:1](16:-:販売アイテムコード)=CSelf60[黒:ウェイト]
||■変数操作: CSelf60[黒:ウェイト] *= CSelf27[区画:次実行時間] + 0
||■
|-◇分岐: 【2】 [ CSelf1[処理順] が 0 と同じ ]の場合↓
||▼ 同時実行
||■変数操作: CSelf60[黒:ウェイト] = 0 + 0
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf1[処理順] が 1 と同じ
          【2】 CSelf1[処理順] が 2 と同じ
          【3】 CSelf1[処理順] が 4 と同じ 【4】 CSelf1[処理順] が 8 と同じ
|-◇分岐: 【1】 [ CSelf1[処理順] が 1 と同じ ]の場合↓
||▼ 左から順番
||■変数操作: CSelf60[黒:ウェイト] = CSelf31[区画:処理番号横] * CSelf27[区画:次実行時間]
||■
|-◇分岐: 【2】 [ CSelf1[処理順] が 2 と同じ ]の場合↓
||▼ 右から順番
||■変数操作: CSelf60[黒:ウェイト] = CSelf20[区画数:横] - 1
||■変数操作: CSelf60[黒:ウェイト] -= CSelf31[区画:処理番号横] + 0
||■変数操作: CSelf60[黒:ウェイト] *= CSelf27[区画:次実行時間] + 0
||■
|-◇分岐: 【3】 [ CSelf1[処理順] が 4 と同じ ]の場合↓
||▼ 上から順番
||■変数操作: CSelf60[黒:ウェイト] = CSelf32[区画:処理番号縦] * CSelf27[区画:次実行時間]
||■
|-◇分岐: 【4】 [ CSelf1[処理順] が 8 と同じ ]の場合↓
||▼ 下から順番
||■変数操作: CSelf60[黒:ウェイト] = CSelf21[区画数:縦] - 1
||■変数操作: CSelf60[黒:ウェイト] -= CSelf32[区画:処理番号縦] + 0
||■変数操作: CSelf60[黒:ウェイト] *= CSelf27[区画:次実行時間] + 0
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf1[処理順] が 5 と同じ
          【2】 CSelf1[処理順] が 6 と同じ
          【3】 CSelf1[処理順] が 9 と同じ 【4】 CSelf1[処理順] が 10 と同じ
|-◇分岐: 【1】 [ CSelf1[処理順] が 5 と同じ ]の場合↓
||▼ 左上から順番
||■変数操作: CSelf60[黒:ウェイト] = CSelf31[区画:処理番号横] + CSelf32[区画:処理番号縦]
||■変数操作: CSelf60[黒:ウェイト] *= CSelf27[区画:次実行時間] + 0
||■
|-◇分岐: 【2】 [ CSelf1[処理順] が 6 と同じ ]の場合↓
||▼ 右上から順番
||■変数操作: CSelf60[黒:ウェイト] = CSelf20[区画数:横] - 1
||■変数操作: CSelf60[黒:ウェイト] -= CSelf31[区画:処理番号横] + 0
||■変数操作: CSelf60[黒:ウェイト] += CSelf32[区画:処理番号縦] + 0
||■変数操作: CSelf60[黒:ウェイト] *= CSelf27[区画:次実行時間] + 0
||■
|-◇分岐: 【3】 [ CSelf1[処理順] が 9 と同じ ]の場合↓
||▼ 左下から順番
||■変数操作: CSelf60[黒:ウェイト] = CSelf21[区画数:縦] - 1
||■変数操作: CSelf60[黒:ウェイト] -= CSelf32[区画:処理番号縦] + 0
||■変数操作: CSelf60[黒:ウェイト] += CSelf31[区画:処理番号横] + 0
||■変数操作: CSelf60[黒:ウェイト] *= CSelf27[区画:次実行時間] + 0
||■
|-◇分岐: 【4】 [ CSelf1[処理順] が 10 と同じ ]の場合↓
||▼ 右下から順番
||■変数操作: CSelf60[黒:ウェイト] = CSelf20[区画数:横] - 1
||■変数操作: CSelf60[黒:ウェイト] -= CSelf31[区画:処理番号横] + 0
||■変数操作: CSelf15[計算用01] = CSelf21[区画数:縦] - 1
||■変数操作: CSelf60[黒:ウェイト] += CSelf15[計算用01] - CSelf32[区画:処理番号縦]
||■変数操作: CSelf60[黒:ウェイト] *= CSelf27[区画:次実行時間] + 0
||■
|◇分岐終了◇
|▼ ウェイト|左上X|左上Y|左右X処理位置|上下Y処理位置|左右±|上下±
|■文字列操作:CSelf7[白黒データ] +=
        "\cself[60]|\cself[41]|\cself[42]|\cself[43]|\cself[44]|\cself[45]|\cself[46]\n"
|▼ ■■■■■■■■■■次の区画へ
|■変数操作: CSelf30[区画:処理番号]〜CSelf31[区画:処理番号横] += 1 + 0
|■変数操作: CSelf33[区画:処理番号上]〜CSelf34[区画:処理番号左] += 1 + 0
|■変数操作: CSelf41[区画:左上X] += CSelf12[黒横長:横サイズ] + 0
|■条件分岐(変数): 【1】 CSelf31[区画:処理番号横] が CSelf20[区画数:横] 以上
|-◇分岐: 【1】 [ CSelf31[区画:処理番号横] が CSelf20[区画数:横] 以上 ]の場合↓
||■変数操作: CSelf31[区画:処理番号横] = 0 + 0
||■変数操作: CSelf32[区画:処理番号縦] += 1 + 0
||■変数操作: CSelf41[区画:左上X] = CSelf40[区画:左端X] + 0
||■変数操作: CSelf42[区画:左上Y] += CSelf11[黒縦長:縦サイズ] + 0
||■
|◇分岐終了◇
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■黒設定
■変数操作: CSelf23[区画:左右X位置上限] = CSelf12[黒横長:横サイズ] - CSelf10[黒縦長:横サイズ]
■変数操作: CSelf24[区画:上下Y位置上限] = CSelf11[黒縦長:縦サイズ] - CSelf13[黒横長:縦サイズ]
■ループ開始
|■文字列操作:CSelf8[白黒処理済みデータ] = ""
|■ループ開始
||■条件分岐(文字): 【1】 CSelf7[白黒データ]が "" と同じ
||-◇分岐: 【1】 [ CSelf7[白黒データ] "" と同じ ]の場合↓
|||■文字列操作:CSelf7[白黒データ] = CSelf8[白黒処理済みデータ]
|||■ループ中断
|||■
||◇分岐終了◇
||■文字列操作:CSelf9[1行切り出し用] =<上1行切出> CSelf7[白黒データ]
||■変数操作: CSelf60[黒:ウェイト] = CSelf9[1行切り出し用] + 0
||■変数操作: CSelf60[黒:ウェイト] -= 1 + 0
||■変数操作: CSelf60[黒:ウェイト] 下限= 0 + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■条件分岐(変数): 【1】 CSelf60[黒:ウェイト] が 1 以上
||-◇分岐: 【1】 [ CSelf60[黒:ウェイト] が 1 以上 ]の場合↓
|||■文字列操作:CSelf8[白黒処理済みデータ] += "\cself[60]|\cself[9]\n"
|||■ループ開始へ戻る
|||■
||◇分岐終了◇
||■変数操作: CSelf61[黒:左上X] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf62[黒:左上Y] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf63[黒:左右X処理位置] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf64[黒:上下Y処理位置] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf65[黒:左右増減] = CSelf9[1行切り出し用] + 0
||■文字列操作:CSelf9[1行切り出し用] =<の指定文字以降を切り出し> "|"
||■変数操作: CSelf66[黒:上下増減] = CSelf9[1行切り出し用] + 0
||▼
||■変数操作: CSelf60[黒:ウェイト] = 0 + 0
||■条件分岐(変数): 【1】 CSelf65[黒:左右増減] が 0 以外
||-◇分岐: 【1】 [ CSelf65[黒:左右増減] が 0 以外 ]の場合↓
|||■変数操作: CSelf70[黒設定X] = CSelf61[黒:左上X] + CSelf63[黒:左右X処理位置]
|||■変数操作: CSelf71[黒設定Y] = CSelf62[黒:左上Y] + 0
|||■マスク機能:[マスクに表示範囲(黒)を追加] =>[\cself[5]] XCSelf70[黒設定X] YCSelf71[黒設定Y] (左上)
|||■変数操作: CSelf63[黒:左右X処理位置] += CSelf65[黒:左右増減] + 0
|||■条件分岐(変数): 【1】 CSelf63[黒:左右X処理位置] が -1 以下
           【2】 CSelf63[黒:左右X処理位置] が CSelf12[黒横長:横サイズ] 以上
|||-◇分岐: 【1】 [ CSelf63[黒:左右X処理位置] が -1 以下 ]の場合↓
||||■変数操作: CSelf65[黒:左右増減] = 0 + 0
||||■
|||-◇分岐: 【2】 [ CSelf63[黒:左右X処理位置] が CSelf12[黒横長:横サイズ] 以上 ]の場合↓
||||■変数操作: CSelf65[黒:左右増減] = 0 + 0
||||■
|||-◇上記以外
||||■変数操作: CSelf63[黒:左右X処理位置] 上限= CSelf23[区画:左右X位置上限] + 0
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■条件分岐(変数): 【1】 CSelf66[黒:上下増減] が 0 以外
||-◇分岐: 【1】 [ CSelf66[黒:上下増減] が 0 以外 ]の場合↓
|||■変数操作: CSelf70[黒設定X] = CSelf61[黒:左上X] + 0
|||■変数操作: CSelf71[黒設定Y] = CSelf62[黒:左上Y] + CSelf64[黒:上下Y処理位置]
|||■マスク機能:[マスクに表示範囲(黒)を追加] =>[\cself[6]] XCSelf70[黒設定X] YCSelf71[黒設定Y] (左上)
|||■変数操作: CSelf64[黒:上下Y処理位置] += CSelf66[黒:上下増減] + 0
|||■条件分岐(変数): 【1】 CSelf64[黒:上下Y処理位置] が -1 以下
           【2】 CSelf64[黒:上下Y処理位置] が CSelf11[黒縦長:縦サイズ] 以上
|||-◇分岐: 【1】 [ CSelf64[黒:上下Y処理位置] が -1 以下 ]の場合↓
||||■変数操作: CSelf66[黒:上下増減] = 0 + 0
||||■
|||-◇分岐: 【2】 [ CSelf64[黒:上下Y処理位置] が CSelf11[黒縦長:縦サイズ] 以上 ]の場合↓
||||■変数操作: CSelf66[黒:上下増減] = 0 + 0
||||■
|||-◇上記以外
||||■変数操作: CSelf64[黒:上下Y処理位置] 上限= CSelf24[区画:上下Y位置上限] + 0
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■条件分岐(変数): 【1】 CSelf65[黒:左右増減] が 0 と同じ
||-◇分岐: 【1】 [ CSelf65[黒:左右増減] が 0 と同じ ]の場合↓
|||■条件分岐(変数): 【1】 CSelf66[黒:上下増減] が 0 と同じ
|||-◇分岐: 【1】 [ CSelf66[黒:上下増減] が 0 と同じ ]の場合↓
||||■ループ開始へ戻る
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■文字列操作:CSelf8[白黒処理済みデータ] +=
        "\cself[60]|\cself[61]|\cself[62]|\cself[63]|\cself[64]|\cself[65]|\cself[66]\n"
||■
|◇ループここまで◇◇
|■条件分岐(文字): 【1】 CSelf7[白黒データ]が "" と同じ
|-◇分岐: 【1】 [ CSelf7[白黒データ] "" と同じ ]の場合↓
||■ループ中断
||■
|◇分岐終了◇
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■文字列操作:CSelf5[黒縦長ファイルアドレス] = ""
■文字列操作:CSelf6[黒横長ファイルアドレス] = ""
■文字列操作:CSelf7[白黒データ] = ""
■文字列操作:CSelf9[1行切り出し用] = ""
■マスク機能:[マスクを全面[表示]に塗る]



マップイベントにコモンイベント「マスク黒四角形複数」を呼び出すイベントを設定してください。

下記の設定は、マップイベントを実行すると、マスク処理でサンプルゲームのタイトル画像を表示し、
決定キーかキャンセルキーを押すと、タイトル画像が消える処理になります。

【イベントコード表示】

■マップイベント

起動条件:決定キーで実行

■マスク機能:[マスクを全面[非表示]に塗る]
■ピクチャ表示:1 [中心]ファイル「SystemFile/TitleGraphic.png」 [左上X:0 Y:0 + 右上X:Sys116:[読]画面サイズX Y:0 +
       左下X:0 Y:Sys117:[読]画面サイズY + 右下X:Sys116:[読]画面サイズX Y:Sys117:[読]画面サイズY] /
       0(0)フレーム / パターン 1 / 透 255 / 通常 カラー R[100] G[100] B[100]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 1
■イベントの挿入[名]: ["マスク黒四角形複数"] <コモンEv 215> / 3
■キー入力:このEvのセルフ変数0 / [入力待ち] 決定(10) キャンセル(11)
■ピクチャ消去:1 / 10(0)フレーム
■ウェイト:1 フレーム



動作確認用のイベントコードを用意しました。

【イベントコード表示(マップイベント用)】

マップイベントに設定して、テストプレイでマップイベントを実行すると、動作確認用のメニュー画面が表示されます。

メニュー画面の操作はマウス操作のみになります。




▲トップへ戻る▲



◎関連ページ

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

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

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