WOLF RPGエディター(ウディタ)/演出・システム【サイトトップへ戻る】
■【マスク使用例】マウスポインタの位置にマスクを設定(拡大鏡・射撃など)
(更新:2023/04/01)


マスク機能を使い、マウスポインタがある周辺のみ、マスクONの画像(隠された画像)が見えるように設定します。



ショートカット
■スポットライト処理(基本設定)
■マウスポインタがある所の画像を変える(別の文章が表示される)
■マウスポインタがある所を拡大表示(拡大鏡)
■マウスポインタがある所を拡大表示(射撃・上空から地上を見る)

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



当ページの処理では、以下の白黒画像(直径128ピクセル)を使ってマスクの表示範囲を設定します。



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


  
■スポットライト処理(基本設定)

マスクONにした画像をマウスポインタがある周辺だけ表示する「スポットライト処理」を設定します。



処理としては…
【1】イベントコマンド[マスクを全面[非表示]に塗る]を実行して、ゲーム画面全体を白で塗りつぶす。
【2】マウスポインタがある位置をイベントコマンド[マスクに表示範囲(黒)を追加]を使って黒で塗りつぶす。
【3】必要に応じてマウスポインタがある位置にピクチャを表示して、マスクONの画像が見える範囲を表示。
と言った処理を毎フレームごとに行って、マウスポインタの周辺にあるマスクONの画像を表示します。



サンプルゲームのサンプルマップAに以下のマップイベントを設定。

【イベントコード表示】

■マップイベント

起動条件:並列実行

■マスク機能:[次IDのキャラのマスクONにする] =>ID 0 〜 19
■ループ開始
|■マスク機能:[マスクを全面[非表示]に塗る]
|■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_128.png] XSys71:マウスX位置 YSys72:マウスY位置 (中心)
|■ピクチャ表示:1 [中心]ウィンドウ「<CIRCLE>」サイズ[64,64] X:Sys71:マウスX位置 Y:Sys72:マウスY位置 /
       0(0)フレーム / パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[20] G[20] B[20]
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇




動作テストがすぐに行えるように、サンプルマップAにゲームの開始位置を設定してください。





テストプレイを実行すると、マウスポインタの周辺のみでマップイベントを表示されます。





さらにイベントコマンド[マップをマスクONにする]を追加すると、マップもマウスポインタ周辺しか表示されなくなります。

【イベントコード表示】

■マップイベント

起動条件:並列実行

■マスク機能:[マップをマスクONにする]<追加
■マスク機能:[次IDのキャラのマスクONにする] =>ID 0 〜 19
■ループ開始
|■マスク機能:[マスクを全面[非表示]に塗る]
|■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_128.png] XSys71:マウスX位置 YSys72:マウスY位置 (中心)
|■ピクチャ表示:1 [中心]ウィンドウ「<CIRCLE>」サイズ[64,64] X:Sys71:マウスX位置 Y:Sys72:マウスY位置 /
       0(0)フレーム / パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[20] G[20] B[20]
<削除
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇





ちなみに、主人公などが表示されず、ただ真っ黒な画面に穴が開いて一部が見えるようにする場合は、
マスク機能を使わずに、単に穴の開いたピクチャ画像を用意して、マウスポインタの位置に表示するだけで済みます。

【イベントコード表示】

■マップイベント

起動条件:並列実行

■ピクチャ表示:1 [中心]ファイル「穴の開いた画像.png」 X:Sys71:マウスX位置 Y:Sys72:マウスY位置 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

▼真ん中に透明色の穴が開いた画像


▼表示例




なお、マウスポインタを動かすと、マウスポインタを動かした1フレーム後にスポットライトの表示が動くので、
移動中のマウスポインタとスポットライトの表示にずれが生じます。

気になる場合は…
【イベントコード表示】

■変数操作: Sys74:マウスポインタ表示する?(1=ON) = 0 + 0
を設定して、マウスポインタをゲーム画面上に表示しないようにしてください。


▲トップへ戻る▲


  
■マウスポインタがある所の画像を変える(別の文章が表示される)

手紙や石板などの文章が書かれたピクチャ画像にマウスポインタを当てると、その部分だけ別の文章が表示されるように設定します。



特殊なレンズを通して見ると、文字が翻訳されたり、いくつかの文字が消えて文章が現れたり、
隠された模様が浮かび上がるなど、主に謎解きゲームで活用できそうな処理です。



今回の処理は、同じ画像サイズで内容が異なる2枚の画像を重ねて表示し、
マウスポインタがある所の文章の表示をひらがなからカタカナに変える処理を設定します。



設定例にはマウス操作キーボード操作があります。

なお、イベントコードはマップイベント用とコモンイベント用が用意されています。



▼マウス操作

右クリックで処理が終了します。

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

■マップイベント

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

▼ セルフ[0]:<SQUARE>の横サイズ
▼ セルフ[1]:<SQUARE>の縦サイズ
▼ セルフ[2]:右クリック取得

■変数操作: Sys74:マウスポインタ表示する?(1=ON) = 0 + 0
■ピクチャ表示:2 [中心]文字列[\E\f[24]あいうえお かき] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:4 [中心]文字列[\E\f[24]アイウエオ カキ] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作+: このEvのセルフ変数0 = ピクチャ:2 の 画像サイズ(横)
■変数操作+: このEvのセルフ変数1 = ピクチャ:2 の 画像サイズ(縦)
■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 += 10 + 0
■ピクチャ表示:1 [中心]ウィンドウ「<SQUARE>」サイズ[このEvのセルフ変数0,このEvのセルフ変数1] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[10] G[30] B[50]
■ピクチャ表示:3 [中心]ウィンドウ「<SQUARE>」サイズ[このEvのセルフ変数0,このEvのセルフ変数1] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[10] G[30] B[50]

■マスク機能:[このピクチャIDをマスク対象にする] => ID 3 〜 4
■ループ開始
|■マスク機能:[マスクを全面[非表示]に塗る]
|■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_128.png] XSys71:マウスX位置 YSys72:マウスY位置 (中心)
|■ピクチャ表示:5 [中心]ウィンドウ「<CIRCLE>FRAME」サイズ[64,64] X:Sys71:マウスX位置 Y:Sys72:マウスY位置 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

|■変数操作+: このEvのセルフ変数2 = マウス右クリック状態
|■条件分岐(変数): 【1】 このEvのセルフ変数2 が 2 と同じ
|-◇分岐: 【1】 [ このEvのセルフ変数2 が 2 と同じ ]の場合↓
||■ループ中断
||■
|◇分岐終了◇
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇
■ピクチャ消去:1 〜 5 / 0(0)フレーム
■変数操作: Sys74:マウスポインタ表示する?(1=ON) = 1 + 0



▼キーボード操作

キャンセルキーで処理が終了します。

キャンセルキーを押し続けてイベントを実行した場合は、
一度キャンセルキーを離して、再びキャンセルキーを押さないと終了させる事はできません。

マウス操作とは異なり、移動できる範囲は文字列を表示したピクチャの上のみになります。

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

■マップイベント

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

▼ セルフ[0]:<SQUARE>の横サイズ/左端移動限界
▼ セルフ[1]:<SQUARE>の縦サイズ/上端移動限界
▼ セルフ[2]:右端移動限界
▼ セルフ[3]:下端移動限界
▼ セルフ[4]:マスク黒のX位置
▼ セルフ[5]:マスク黒のY位置
▼ セルフ[6]:キーコード
▼ セルフ[7]:[1=一度キャンセルキーを離さないと終了できない]

■ピクチャ表示:2 [中心]文字列[\E\f[24]あいうえお かき] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:4 [中心]文字列[\E\f[24]アイウエオ カキ] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[0]
■変数操作+: このEvのセルフ変数0 = ピクチャ:2 の 画像サイズ(横)
■変数操作+: このEvのセルフ変数1 = ピクチャ:2 の 画像サイズ(縦)
■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 += 24 + 0
■ピクチャ表示:1 [中心]ウィンドウ「<SQUARE>」サイズ[このEvのセルフ変数0,このEvのセルフ変数1] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[10] G[30] B[50]
■ピクチャ表示:3 [中心]ウィンドウ「<SQUARE>」サイズ[このEvのセルフ変数0,このEvのセルフ変数1] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[10] G[30] B[50]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 3 〜 4
▼ 移動可能範囲を設定
■変数操作+: このEvのセルフ変数0 = ピクチャ:2 の 画像サイズ(横)
■変数操作+: このEvのセルフ変数1 = ピクチャ:2 の 画像サイズ(縦)
■変数操作: このEvのセルフ変数2 = このEvのセルフ変数0 / 2
■変数操作: このEvのセルフ変数3 = このEvのセルフ変数1 / 2
■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 /= -2 + 0
■変数操作: このEvのセルフ変数0 += 160 + 0
■変数操作: このEvのセルフ変数1 += 120 + 0
■変数操作: このEvのセルフ変数2 += 160 + 0
■変数操作: このEvのセルフ変数3 += 120 + 0
▼ 初期位置
■変数操作: このEvのセルフ変数4 = 160 + 0
■変数操作: このEvのセルフ変数5 = 120 + 0
■変数操作: このEvのセルフ変数7 = 1 + 0
■ループ開始
|■マスク機能:[マスクを全面[非表示]に塗る]
|■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_128.png] XこのEvのセルフ変数4 YこのEvのセルフ変数5 (中心)
|■ピクチャ表示:5 [中心]ウィンドウ「<CIRCLE>FRAME」サイズ[64,64] X:このEvのセルフ変数4 Y:このEvのセルフ変数5 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ウェイト:1 フレーム
|■キー入力:このEvのセルフ変数6 / 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 このEvのセルフ変数6 が 0 と同じ 【2】 このEvのセルフ変数6 が 1 以上
|-◇分岐: 【1】 [ このEvのセルフ変数6 が 0 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数7 = 0 + 0
||■
|-◇分岐: 【2】 [ このEvのセルフ変数6 が 1 以上 ]の場合↓
||■条件分岐(変数): 【1】 このEvのセルフ変数7 が 0 と同じ
||-◇分岐: 【1】 [ このEvのセルフ変数7 が 0 と同じ ]の場合↓
|||■ループ中断
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■キー入力:このEvのセルフ変数6 / 左右(4,6)
|■条件分岐(変数): 【1】 このEvのセルフ変数6 が 4 と同じ 【2】 このEvのセルフ変数6 が 6 と同じ
|-◇分岐: 【1】 [ このEvのセルフ変数6 が 4 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数4 -= 2 + 0
||■
|-◇分岐: 【2】 [ このEvのセルフ変数6 が 6 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数4 += 2 + 0
||■
|◇分岐終了◇
|■キー入力:このEvのセルフ変数6 / 上下(8,2)
|■条件分岐(変数): 【1】 このEvのセルフ変数6 が 2 と同じ 【2】 このEvのセルフ変数6 が 8 と同じ
|-◇分岐: 【1】 [ このEvのセルフ変数6 が 2 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数5 += 2 + 0
||■
|-◇分岐: 【2】 [ このEvのセルフ変数6 が 8 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数5 -= 2 + 0
||■
|◇分岐終了◇
|■変数操作: このEvのセルフ変数4 下限= このEvのセルフ変数0 + 0
|■変数操作: このEvのセルフ変数4 上限= このEvのセルフ変数2 + 0
|■変数操作: このEvのセルフ変数5 下限= このEvのセルフ変数1 + 0
|■変数操作: このEvのセルフ変数5 上限= このEvのセルフ変数3 + 0
|■
◇ループここまで◇◇
■ピクチャ消去:1 〜 5 / 0(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■マウスポインタがある所を拡大表示(拡大鏡)

「拡大鏡」をイメージして、文字列の一部を拡大して見る処理を設定します。



この処理は、マスクONにした大きな画像のピクチャマスクOFFにした小さな画像のピクチャを重ねて表示し、
拡大しているように見せる処理になります。

手紙や小物を拡大して見るような場面で活用できそうです。



拡大した画像は、小さな画像の4倍のサイズで表示します。

そのため、小さな画像の上でマウスポインタを1ピクセル移動させた場合は、拡大した画像を4ピクセル移動させます。

また移動方向は、画面の中央(画像の中心)からマウスで右に1ピクセル移動させた場合は、
拡大した画像は左に4ピクセルと逆方向に移動させます。

さらに画面の中央からマウスポインタ(マスクの黒画像を表示する位置)までの距離を算出して、
拡大した画像の表示位置に加えて、表示のずれを修正します。



設定例にはマウス操作キーボード操作があります。

なお、イベントコードはマップイベント用とコモンイベント用が用意されています。



▼マウス操作

右クリックで処理が終了します。

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

■マップイベント

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

▼ セルフ[0]:<SQUARE>の横サイズ
▼ セルフ[1]:<SQUARE>の縦サイズ
▼ セルフ[3]:拡大したピクチャのX描画座標
▼ セルフ[4]:拡大したピクチャのY描画座標
▼ セルフ[5]:右クリック取得

■変数操作: Sys74:マウスポインタ表示する?(1=ON) = 0 + 0
■ピクチャ表示:2 [中心]文字列[\E\f[6]あいうえお かきく] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:4 [中心]文字列[\E\f[24]あいうえお かき] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作+: このEvのセルフ変数0 = ピクチャ:2 の 画像サイズ(横)
■変数操作+: このEvのセルフ変数1 = ピクチャ:2 の 画像サイズ(縦)
■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 += 6 + 0
■ピクチャ表示:1 [中心]ウィンドウ「<SQUARE>」サイズ[このEvのセルフ変数0,このEvのセルフ変数1] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[10] G[30] B[50]
■変数操作+: このEvのセルフ変数0 = ピクチャ:4 の 画像サイズ(横)
■変数操作+: このEvのセルフ変数1 = ピクチャ:4 の 画像サイズ(縦)
■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 += 24 + 0
■ピクチャ表示:3 [中心]ウィンドウ「<SQUARE>」サイズ[このEvのセルフ変数0,このEvのセルフ変数1] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[10] G[30] B[50]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 3 〜 4
■ループ開始
|■変数操作: このEvのセルフ変数4 = 160 - Sys71:マウスX位置
|■変数操作: このEvのセルフ変数5 = 120 - Sys72:マウスY位置
|■変数操作: このEvのセルフ変数4〜このEvのセルフ変数5 *= 4 + 0
|■変数操作: このEvのセルフ変数4 -= 160 - Sys71:マウスX位置
|■変数操作: このEvのセルフ変数5 -= 120 - Sys72:マウスY位置
|■ピクチャエフェクト:3 〜 4 [描画座標シフト(最終値)] Xシフト このEvのセルフ変数4 / Yシフト このEvのセルフ変数5 (0)フレーム
|■マスク機能:[マスクを全面[非表示]に塗る]
|■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_128.png] XSys71:マウスX位置 YSys72:マウスY位置 (中心)
|■ピクチャ表示:5 [中心]ウィンドウ「<CIRCLE>FRAME」サイズ[64,64] X:Sys71:マウスX位置 Y:Sys72:マウスY位置 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作+: このEvのセルフ変数5 = マウス右クリック状態
|■条件分岐(変数): 【1】 このEvのセルフ変数5 が 2 と同じ
|-◇分岐: 【1】 [ このEvのセルフ変数5 が 2 と同じ ]の場合↓
||■ループ中断
||■
|◇分岐終了◇
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇
■ピクチャ消去:1 〜 5 / 0(0)フレーム
■変数操作: Sys74:マウスポインタ表示する?(1=ON) = 1 + 0



▼キーボード操作

キャンセルキーで処理が終了します。

キャンセルキーを押し続けてイベントを実行した場合は、
一度キャンセルキーを離して、再びキャンセルキーを押さないと終了させる事はできません。

マウス操作とは異なり、移動できる範囲は文字列を表示したピクチャの上のみになります。

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

■マップイベント

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

▼ セルフ[0]:<SQUARE>の横サイズ/左端移動限界
▼ セルフ[1]:<SQUARE>の縦サイズ/上端移動限界
▼ セルフ[2]:右端移動限界
▼ セルフ[3]:下端移動限界
▼ セルフ[4]:マスク黒のX位置
▼ セルフ[5]:マスク黒のY位置
▼ セルフ[6]:拡大したピクチャのX描画座標
▼ セルフ[7]:拡大したピクチャのY描画座標
▼ セルフ[8]:キーコード
▼ セルフ[9]:[1=一度キャンセルキーを離さないと終了できない]

■ピクチャ表示:2 [中心]文字列[\E\f[6]あいうえお かきく] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:4 [中心]文字列[\E\f[24]あいうえお かき] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作+: このEvのセルフ変数0 = ピクチャ:2 の 画像サイズ(横)
■変数操作+: このEvのセルフ変数1 = ピクチャ:2 の 画像サイズ(縦)
■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 += 6 + 0
■ピクチャ表示:1 [中心]ウィンドウ「<SQUARE>」サイズ[このEvのセルフ変数0,このEvのセルフ変数1] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[10] G[30] B[50]
■変数操作+: このEvのセルフ変数0 = ピクチャ:4 の 画像サイズ(横)
■変数操作+: このEvのセルフ変数1 = ピクチャ:4 の 画像サイズ(縦)
■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 += 24 + 0
■ピクチャ表示:3 [中心]ウィンドウ「<SQUARE>」サイズ[このEvのセルフ変数0,このEvのセルフ変数1] X:160 Y:120 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[10] G[30] B[50]
■マスク機能:[このピクチャIDをマスク対象にする] => ID 3 〜 4
▼ 移動可能範囲を設定
■変数操作+: このEvのセルフ変数0 = ピクチャ:4 の 画像サイズ(横)
■変数操作+: このEvのセルフ変数1 = ピクチャ:4 の 画像サイズ(縦)
■変数操作: このEvのセルフ変数2 = このEvのセルフ変数0 / 8
■変数操作: このEvのセルフ変数3 = このEvのセルフ変数1 / 8
■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 /= -8 + 0
■変数操作: このEvのセルフ変数0 += 160 + 0
■変数操作: このEvのセルフ変数1 += 120 + 0
■変数操作: このEvのセルフ変数2 += 160 + 0
■変数操作: このEvのセルフ変数3 += 120 + 0
▼ 初期位置
■変数操作: このEvのセルフ変数4 = 160 + 0
■変数操作: このEvのセルフ変数5 = 120 + 0
■変数操作: このEvのセルフ変数9 = 1 + 0
■ループ開始
|■変数操作: このEvのセルフ変数6 = 160 - このEvのセルフ変数4
|■変数操作: このEvのセルフ変数7 = 120 - このEvのセルフ変数5
|■変数操作: このEvのセルフ変数6〜このEvのセルフ変数7 *= 4 + 0
|■変数操作: このEvのセルフ変数6 -= 160 - このEvのセルフ変数4
|■変数操作: このEvのセルフ変数7 -= 120 - このEvのセルフ変数5
|■ピクチャエフェクト:3 〜 4 [描画座標シフト(最終値)] Xシフト このEvのセルフ変数6 / Yシフト このEvのセルフ変数7 (0)フレーム
|■マスク機能:[マスクを全面[非表示]に塗る]
|■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_128.png] XこのEvのセルフ変数4 YこのEvのセルフ変数5 (中心)
|■ピクチャ表示:5 [中心]ウィンドウ「<CIRCLE>FRAME」サイズ[64,64] X:このEvのセルフ変数4 Y:このEvのセルフ変数5 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ウェイト:1 フレーム
|■キー入力:このEvのセルフ変数8 / 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 このEvのセルフ変数8 が 0 と同じ 【2】 このEvのセルフ変数8 が 1 以上
|-◇分岐: 【1】 [ このEvのセルフ変数8 が 0 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数9 = 0 + 0
||■
|-◇分岐: 【2】 [ このEvのセルフ変数8 が 1 以上 ]の場合↓
||■条件分岐(変数): 【1】 このEvのセルフ変数9 が 0 と同じ
||-◇分岐: 【1】 [ このEvのセルフ変数9 が 0 と同じ ]の場合↓
|||■ループ中断
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■キー入力:このEvのセルフ変数8 / 左右(4,6)
|■条件分岐(変数): 【1】 このEvのセルフ変数8 が 4 と同じ 【2】 このEvのセルフ変数8 が 6 と同じ
|-◇分岐: 【1】 [ このEvのセルフ変数8 が 4 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数4 -= 1 + 0
||■
|-◇分岐: 【2】 [ このEvのセルフ変数8 が 6 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数4 += 1 + 0
||■
|◇分岐終了◇
|■キー入力:このEvのセルフ変数8 / 上下(8,2)
|■条件分岐(変数): 【1】 このEvのセルフ変数8 が 2 と同じ 【2】 このEvのセルフ変数8 が 8 と同じ
|-◇分岐: 【1】 [ このEvのセルフ変数8 が 2 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数5 += 1 + 0
||■
|-◇分岐: 【2】 [ このEvのセルフ変数8 が 8 と同じ ]の場合↓
||■変数操作: このEvのセルフ変数5 -= 1 + 0
||■
|◇分岐終了◇
|■変数操作: このEvのセルフ変数4 下限= このEvのセルフ変数0 + 0
|■変数操作: このEvのセルフ変数4 上限= このEvのセルフ変数2 + 0
|■変数操作: このEvのセルフ変数5 下限= このEvのセルフ変数1 + 0
|■変数操作: このEvのセルフ変数5 上限= このEvのセルフ変数3 + 0
|■
◇ループここまで◇◇
■ピクチャ消去:1 〜 5 / 0(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■マウスポインタがある所を拡大表示(射撃・上空から地上を見る)



上記の■マウスポインタの位置を拡大表示(拡大鏡)と同じく、
マスクONにした通常のマップ表示マスクOFFの縮小したピクチャ画像を重ねて表示し、
拡大しているように見せる処理になります。

遠くの敵を観察する(射撃する)、上空から地上を見る(爆弾を落とす)などで活用できそうです。



遊んで動作確認ができるサンプルゲームを用意しました。

サンプルゲームのデータ

ダウンロード後に右クリック→[すべて展開]で解凍し、ゲームを起動してください。

ゲーム内容は、マップ内にいるウルファールを探すゲームです。

ウルファールに近付くとSEが鳴り、距離が近いとSEが鳴る間隔が短くなります。

発見してクリックすると、ウルファールは61マス以上離れた場所へ移動して、再びゲームが始まります。(永久ループ)

なお、文章の表示はクリックでも消せます。(キーボードの操作無しでプレイ可能)



縮小マップは8分の1のサイズなので、縮小マップでマウスポインタを1ピクセル移動させると、
通常マップは8ピクセル(0.5マス)スクロールします。



ゲーム開始時やリトライ時には、主人公がいる位置から61マス以上離れた位置へ主人公を移動させます。

これはリトライ時に、前にクリアした位置の近くに主人公を移動させないようにするための処置です。

この場所移動では、0.5マス単位の移動ではなく、1マス単位で移動させます。

これは0.5マス単位の移動だと、体の右半分が海の上に乗ってしまうような状態になる可能性があるためです。

※0.5マス単位の場所移動も一応可能ですが、
 その場合は移動先のマスの左上、右上、左下、右下の4つの0.5マスで、全て通行可能であるかどうかを調べる必要があり、
 かなり手間がかかるため、今回の処理では1マス単位で場所移動しています。




主人公の距離を算出する処理では、マウスポインタの位置と主人公の「画面X座標」「画面Y座標」で計測します。

0.5マスのXY座標でも調べる事はできますが、0.5マスで調べると8ピクセル単位で処理する事になるので、
特にターゲットが移動している場合は、距離の計測にちょっとしたズレが生じる可能性があります。

そのため、より的確にターゲットとの距離が測れるように、画面位置で距離を計測しています。



縮小したマップ画像や十字の赤い線のピクチャ番号は「-100000以下」で設定します。

-100000以下」にしないとマップの上にピクチャを表示してしまい、マップの地形が見えなくなります。

▼縮小マップや赤い線のピクチャ番号を「-99999以上」にした場合




縮小したマップ画像の作成には、コモン素材「縮小マップ画像出力コモン」を使用しています。
【コモン素材「縮小マップ画像出力コモン」のページを開く】



【イベントコード表示】

■コモンイベント「ウルファールを探せ!」

起動条件:呼び出しのみ

■変数操作: Sys73:文・選択肢のマウス入力(1なら受付) = 1 + 0
■変数操作: Sys74:マウスポインタ表示する?(1=ON) = 0 + 0
■ピクチャ表示:-100002 [左上]ファイル「Picture/mask_map.png」 X:0 Y:0 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■マスク機能:[次IDのキャラのマスクONにする] =>ID -2
■マスク機能:[マップをマスクONにする]
▼ マウスポインタの位置へ主人公を移動(マウスポインタより離れた位置に移動させるため)
■ピクチャ以外の画像更新[停止]
■変数操作: CSelf10[マウス中心X] = Sys71:マウスX位置 / 2
■変数操作: CSelf11[マウス中心Y] = Sys72:マウスY位置 / 2
■変数操作: CSelf10[マウス中心X] 上限= 159 + 0
■変数操作: CSelf11[マウス中心Y] 上限= 119 + 0
■場所移動:主人公 ▲現在のマップ X:CSelf10[マウス中心X] Y:CSelf11[マウス中心Y] [トランジションなし]
■ピクチャ以外の画像更新[再開]
■回数付きループ [ 0 ]回
|●ラベル地点「クリア(再スタート)」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■文章:発見!
|■ピクチャ消去:-100001 〜 -100000 / 0(0)フレーム
|■ピクチャ消去:1 / 0(0)フレーム
|■
◇ループここまで◇◇
■マスク機能:[マスクを全面[非表示]に塗る]
■ループ開始
|■変数操作: CSelf20[ランダムX] = 30 〜 130
|■変数操作: CSelf21[ランダムY] = 30 〜 90
|■変数操作: CSelf30[距離横] 絶対値= CSelf20[ランダムX] - 主人公のX座標(マップ)
|■変数操作: CSelf31[距離縦] 絶対値= CSelf21[ランダムY] - 主人公のY座標(マップ)
|■変数操作: CSelf30[距離横] += CSelf31[距離縦] + 0
|■条件分岐(変数): 【1】 CSelf30[距離横] が 60 以下
|-◇分岐: 【1】 [ CSelf30[距離横] が 60 以下 ]の場合↓
||▼ 現在位置と距離が近いので、XY座標設定をやり直し
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■変数操作+: CSelf22[通行設定] = X:CSelf20[ランダムX] Y:CSelf21[ランダムY]の通行判定:タイル&イベント(○=0,×=1)
|■条件分岐(変数): 【1】 CSelf22[通行設定] が 0 と同じ
|-◇分岐: 【1】 [ CSelf22[通行設定] が 0 と同じ ]の場合↓
||■場所移動:主人公 ▲現在のマップ X:CSelf20[ランダムX] Y:CSelf21[ランダムY] [トランジションなし]
||■ループ中断
||■
|◇分岐終了◇
|■
◇ループここまで◇◇
■文章:マップのどこかにいるウルファールを見つけてね!\n近付くと音が鳴るよ!\n
    見つけたらクリックしてね!\n方向キー+決定キーでも操作できるよ。
■変数操作: CSelf35[二重押し防止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■キー入力:CSelf20[ランダムX] 上下(8,2)
|■条件分岐(変数): 【1】 CSelf20[ランダムX] が 2 と同じ 【2】 CSelf20[ランダムX] が 8 と同じ
|-◇分岐: 【1】 [ CSelf20[ランダムX] が 2 と同じ ]の場合↓
||■変数操作: Sys72:マウスY位置 += 1 + 0
||■
|-◇分岐: 【2】 [ CSelf20[ランダムX] が 8 と同じ ]の場合↓
||■変数操作: Sys72:マウスY位置 -= 1 + 0
||■
|◇分岐終了◇
|■キー入力:CSelf20[ランダムX] 左右(4,6)
|■条件分岐(変数): 【1】 CSelf20[ランダムX] が 4 と同じ 【2】 CSelf20[ランダムX] が 6 と同じ
|-◇分岐: 【1】 [ CSelf20[ランダムX] が 4 と同じ ]の場合↓
||■変数操作: Sys71:マウスX位置 -= 1 + 0
||■
|-◇分岐: 【2】 [ CSelf20[ランダムX] が 6 と同じ ]の場合↓
||■変数操作: Sys71:マウスX位置 += 1 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf10[マウス中心X] = Sys71:マウスX位置 + 0
|■変数操作: CSelf11[マウス中心Y] = Sys72:マウスY位置 + 0
|■ピクチャ表示:-100001 [中心]ウィンドウ「<SQUARE>」サイズ[1,480] X:CSelf10[マウス中心X] Y:0 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[0] B[0]
|■ピクチャ表示:-100000 [中心]ウィンドウ「<SQUARE>」サイズ[640,1] X:0 Y:CSelf11[マウス中心Y] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[0] B[0]
|■ピクチャ表示:2 [左上]文字列[\EX:\cself[10] Y] X:4 Y:4 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf10[マウス中心X] 下限= 32 + 0
|■変数操作: CSelf10[マウス中心X] 上限= 320 - 32
|■変数操作: CSelf11[マウス中心Y] 下限= 32 + 0
|■変数操作: CSelf11[マウス中心Y] 上限= 240 - 32
|■マスク機能:[マスクを全面[非表示]に塗る]
|■マスク機能:[マスクに表示範囲(黒)を追加] =>[Picture/mask_kuro_128.png] XCSelf10[マウス中心X] YCSelf11[マウス中心Y] (中心)
|■ピクチャ表示:1 [中心]ウィンドウ「<CIRCLE>FRAME」サイズ[64,64] X:CSelf10[マウス中心X] Y:CSelf11[マウス中心Y] /
       0(0)フレーム / パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|▼ スクロール画面位置を設定
|■変数操作: CSelf12[スクロールX] = Sys71:マウスX位置 * 8
|■変数操作: CSelf13[スクロールY] = Sys72:マウスY位置 * 8
|■変数操作: CSelf12[スクロールX] -= 160 + 0
|■変数操作: CSelf13[スクロールY] -= 120 + 0
|■変数操作: CSelf12[スクロールX] += 160 - CSelf10[マウス中心X]
|■変数操作: CSelf13[スクロールY] += 120 - CSelf11[マウス中心Y]
|■変数操作: Sys104:Xスクロール値 = CSelf12[スクロールX] + 0
|■変数操作: Sys105:Yスクロール値 = CSelf13[スクロールY] + 0
|▼ 主人公までの距離を計測
|■変数操作+: CSelf30[距離横] = 主人公 の 画面X座標
|■変数操作+: CSelf31[距離縦] = 主人公 の 画面Y座標
|■変数操作: CSelf31[距離縦] -= 8 + 0
|■変数操作: CSelf30[距離横] 絶対値= CSelf30[距離横] - Sys71:マウスX位置
|■変数操作: CSelf31[距離縦] 絶対値= CSelf31[距離縦] - Sys72:マウスY位置
|■変数操作: CSelf30[距離横] += CSelf31[距離縦] + 0
|■変数操作: CSelf32[SE演奏カウント] += 1 + 0
|■条件分岐(変数): 【1】 CSelf30[距離横] が 100 以下
          【2】 CSelf30[距離横] が 240 以下
          【3】 CSelf30[距離横] が 360 以下
|-◇分岐: 【1】 [ CSelf30[距離横] が 100 以下 ]の場合↓
||■変数操作: CSelf32[SE演奏カウント] %= 30 + 0
||■
|-◇分岐: 【2】 [ CSelf30[距離横] が 240 以下 ]の場合↓
||■変数操作: CSelf32[SE演奏カウント] %= 60 + 0
||■
|-◇分岐: 【3】 [ CSelf30[距離横] が 360 以下 ]の場合↓
||■変数操作: CSelf32[SE演奏カウント] %= 120 + 0
||■
|-◇上記以外
||■変数操作: CSelf32[SE演奏カウント] 上限= 119 + 0
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf32[SE演奏カウント] が 0 と同じ
|-◇分岐: 【1】 [ CSelf32[SE演奏カウント] が 0 と同じ ]の場合↓
||■サウンド:SE ファイル[SE/[System]Get1_default.ogg] 音 100% 周 100% (0 チャンネル) 再生 / 遅延:0フレーム
||■
|◇分岐終了◇
|■変数操作+: CSelf33[クリック] = マウス左クリック状態
|■条件分岐(変数): 【1】 CSelf33[クリック] が 2 と同じ
|-◇分岐: 【1】 [ CSelf33[クリック] が 2 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf30[距離横] が 24 以下
||-◇分岐: 【1】 [ CSelf30[距離横] が 24 以下 ]の場合↓
|||●ラベル「クリア(再スタート)」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■キー入力:CSelf34[キーコード] 決定(10)
|■条件分岐(変数): 【1】 CSelf34[キーコード] が 0 と同じ
          【2】 CSelf35[二重押し防止] が 1 と同じ
         【3】 CSelf34[キーコード] が 10 と同じ
|-◇分岐: 【1】 [ CSelf34[キーコード] が 0 と同じ ]の場合↓
||■変数操作: CSelf35[二重押し防止] = 0 + 0
||■
|-◇分岐: 【2】 [ CSelf35[二重押し防止] が 1 と同じ ]の場合↓
||■
|-◇分岐: 【3】 [ CSelf34[キーコード] が 10 と同じ ]の場合↓
||■変数操作: CSelf35[二重押し防止] = 1 + 0
||■条件分岐(変数): 【1】 CSelf30[距離横] が 24 以下
||-◇分岐: 【1】 [ CSelf30[距離横] が 24 以下 ]の場合↓
|||●ラベル「クリア(再スタート)」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■
◇ループここまで◇◇



エディタ用のファイル(Editor.exe)をコピー&貼り付けで設定して起動すると、
イベント設定を見たり、改造したりする事ができます。



▲トップへ戻る▲



◎関連ページ

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

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

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