ひとつのマップに複数の場所というのは

言葉で説明するのは難しいので、画像でいうと

こんな状態です。

なぜこうするのかというと、マップ数の削減です。

削減の利点は

1つの街の建物の内部(内部=部屋)という単位で作れば、管理しやすい

私にとってはこれだけです。

 

 

上のようにするには、いくつか気をつけることがあります。

そのマップに入った瞬間に起こしたいイベント(自動イベント)が、どの部屋でも起こるということです。

 

対処法がないわけではなく、ここで使えるのがリージョン

マップチップの種類でいえば

 

タブのRの項目に1〜255まであります。

255個まで要素をつけられるということでもあります。

部屋ごとにリージョンを設定することで、よそで起こる自動イベントを起こさない。狙った場所だけで起こすことができます。

部屋ごとでBGMを変えることもできる。

ということで、マップを部屋ごとに作る必要もないんですね。

 

 

イベント側の設定では

 

自動発動イベントにする。

アクターの現在地のリージョンを、変数で取得させる。

条件分岐でリージョンを発動条件にする。

 

 

私は変数でリージョンを取得させる部分を、コモンイベントで

X軸、Y軸、リージョン、マップIDを全て取得できるようにしています。

 

コモンイベント的には左図のように

スクリプトと、その下の4行は全く同じです。

わかる方はスクリプトで、やっても良いし

変数で設定しても何も変わらないです。

 

これがコモンイベントで現在地取得という名前で登録してあるので、自動イベントの一行目におきます。

自動イベントでは、最後にイベントの一時消去を設定しないと、何度も繰り返し起こってしまいます。

 


実際リージョンを全ての部屋に設定しました。

イベントの解説で行なっている処理は、お店に入ったらお店の名前を表示したい。

宿屋なら宿屋と表示したいのが目的です。

もちろんこの時点で、BGMを設定してお店ごとにBGMを変えることもできます。

さらには、鍛冶屋だと、鉄を打つ音もそのお店だけに設定することも可能なわけです。

 

 

実際の表示はこんな感じです。

 

ダンジョンなんかは、階層や各部屋ごとにマップを作ってる方そういないだろうし

自動イベントよりも、キャラクターにイベントを踏ませて発動させるといった方法も多いと思います。

 

といった具合で、ちょっとずつRPGツクールMV触り始めました。

新しい作品ではなく、最新の風の森を修正、完成度高めようかなと思います。


森の人

漫画とか描いてます、よろしくね。