ゼル伝マップ移動

【ゼル伝風マップ移動システム】
※ゼル伝:ゲーム会社の大御所、『任天堂』の
 人気製品『ゼルダの伝説』シリーズの事を指す。

今回はゼル伝といっても、任天堂64やゲームキューブ版の
ような3Dのほうではなく、SFCやGB版のような
2Dのほうを指します。
つまり・・・

・マップは画面一枚(ツクールだと20×15)ずつのみ
・マップ間の移動はスクロール。暗転式の場所移動は
 屋内に入った時、階数が変わった時などのみ

というようなマップ移動システムを
ツクールで再現しよう、というものです。
・・・分かる人にだけ、分かって下さい(マテ)。


ではまず、重要となるマッピングの方法から。
ここでは、20×15のマップを繋ぎ合わせて作られた
一つの大きなマップ(フィールド)を作る必要があります。
フィールド作りの方法としては・・・

1.まず20×15にまっぷを設定し、そこに
  何でもいいので下層チップを引く
  そして、その枠を取るように上層チップを置く。
  上層チップは、1マス分が分かれば何でもいいです。
  (ちなみに私は『壺チップ』を使いました/笑)

↓こんな感じ □→上層チップ+下層チップ
□□□□□  ■→下層チップのみ
□■■■□
□■■■□
□■■■□
□□□□□

2.マップの設定で、必要なマップの数の分の数値を設定。
  例えば、20×15のマップが横に10個分、
  縦に8個分で一つのフィールドとするなら、
  200×120に設定する。
  あとは、『1』のマップをコピペの繰り返し。

これで、一つのフィールドが完成です。
あとは、このフィールドに色を付けていくのですが、
ここは自分の思うようにマッピングしましょう。

ただ、ダンジョンの中などはいいのですが、
外界や自然界ならば、複数のマップを一つのマップとして
使うようにするのが、マッピングのコツです。
例えば、『森』を再現するならば、森らしいマップを
5,6個繋いで、森の入り口、出口のマップを作れば、
これでその5,6個のマップは、全て『森』の中、という
演出が出来ます。
山脈、村、草原、花畑など、基本的に自然界のフィールドは
全てそうやってマッピングしていきましょう。

逆に、ダンジョンは一つのマップを『一つの部屋』として
扱う方が、閉鎖的な感じがでて効果的です。
もちろん、つなげて大部屋みたいにするのもいいですし、
一つの部屋を分割して、壁に隔てるのもいいでしょう。


ちなみに、真にゼルダ風にしたいなら
画面下、あるいは上に、ステータス画面が
必要になってきます。
要するに、現在の体力、装備品、所持金などを常に
画面の端に表示しておくものです。
もしもそれを組み込むのなら、マッピングの時に
実は気をつけなければならない事がでてきます。

具体的に言いますと・・・

1.1番目の横列のマップの、『一番上2マス分』に
  空白を開けておく

□□□□□ ←ここのマップの『一番上2マス』
■■■■■
■■■■■
■■■■■
■■■■■

2.2番目以降の横列のマップは、一つのマップを
  『20×13』としてマッピングする

分かっていただけたでしょうか?
つまり、一番上2マス分はステータス表示用の場所として
マップを開けておく必要があり、縦15マス分の画面の内
13マス分で一つのマップを作る必要があるのです。
そして、スクロールする際にそのスクロールする
マス数を2マス減らします。
そうすれば、ステータス表示2マス分がマップの中に
確保できます。

・・・どうも言葉ではうまく表現できませんので、
ステータス表示システムは、理解できた方のみ
ご自分の力で、実現するようにしてください。
その場合、スクロールのイベントもいろいろと変更が
起きてしまいますので。すいません。


次は肝心要の『スクロール式場所移動イベント』をマップに埋め込みます。

まず、初期設定が必要になります。
初期設定とは、イベントを動かすために『マップID』を
設定する必要があります。
『0』では動きませんからね。

マップIDとは、その名の通りマップにつける番号です。
例えば、左上から順に1、2、3、4と付けていくと
すると、1のマップから右へ行くと、マップIDは
2になり、2のマップへ画面が移ります。
とりあえず、初期位置のマップIDを初期設定で
代入するようにしてください。

そして、初期設定ではもう一つ、することがあります。
『画面の位置の調整』と、『画面位置の固定』です。
フィールドは広いマップですので、確実に主人公を中心に
マップの位置が設定されてしまいます。
そのまま『画面位置の固定』を行いますと、ズレたまま
スクロールしてしまうので、必ず初期設定で
画面の位置を中央に調整しておきましょう。
場所移動のように画面を暗転させ、
その間に調整させるのがいいでしょう。


さて、マップイベントの作成に移るのですが、
場所移動イベントを設定する位置に、注意が必要です。

通常は、場所移動イベントは画面の端に設置しますが、
今回は、『画面の外』に設置します。

↓こんな感じ   □→場所移動イベント
 □□□□□   ■→マップ
□■■■■■□
□■■■■■□
□■■■■■□
□■■■■■□
 □□□□□

つまり、画面の外に出ようとすると、それに伴って
画面がついてくる、という風なイベントを組みます。
ここで注意したいのは、全ての場所移動イベントには
マップIDによって開始条件をつけます。
例えば、上の図の□の部分は、マップIDが1の時は
場所移動イベントとして動きますが、
それ以外のときは、何も起こりません。


では、イベントの中身を。
例として、マップの右側につけるイベントを作りましょう。

開始条件変数:変数[マップID]が1 と同値

開始条件:主人公から触れられた時
プライオリティタイプ:通常キャラと重ならない
グラフィック:透明

◆画面のスクロール:右に20ずらす,速度6
◆キャラクターの動作指定:主人公,すりぬけ開始,右に
             移動,すりぬけ終了
◆指定動作の全実行
◆変数の指定:[マップID]代入,2
◆ウェイト:0.4秒   ※重要

あとは、コピペでイベントを量産して、
場所移動イベントでマップを囲んでやればOKです。

少し複雑ですが、概念さえ分かれば
何とかできると思います。
肝心なのは
・画面の外につけて、マップIDによって動かす
・キャラと重ならないようにする
の2点のみなので。

さて、勘のいい人ならここで気付くと思うのですが、
このまま普通に作っていくと、『場所移動が重なる』
イベントが発生してきます。

↓わかるでしょうか?
 □□□□◎◎◇◇◇◇
□■■■■◇□■■■■◇
□■■■■◇□■■■■◇
□■■■■◇□■■■■◇
□■■■■◇□■■■■◇
□■■■■◇□■■■■◇
 □□□□◎◎◇◇◇◇

□→『マップIDが1』の時の場所移動イベント
◇→『マップIDが2』の時の場所移動イベント
◎→場所移動イベントが重なった所

上の図の◎の部分には、例えば
イベントの1ページ目には□の場所移動イベントを、
2ページ目には◇の場所移動イベントを組み込んで、
変数で開始条件を分ければ何とかなります。

さて、最後に、室内や階段など、暗転式の
場所移動イベントを作りましょう。
もちろん、これも通常通りではイベントに誤作動が
起こってしまいます。

組み込まなければならないのは、
・画面の位置調整と固定
・行き先のマップIDの代入
です。
これはもう、手動でするしかないので
そのつもりで。
ちなみに、部屋の中でもマップIDをつけるように
しましょう。例え、一部屋しかなかったとしても。

まず、部屋の中へ入るイベントを

イベント開始条件など:ご自由に

◆変数の操作:[マップID]代入,1
◆BGMのフィードアウト:1秒(まぁ、お好みで)
◆画面の消去:場所移動の設定
◆スイッチの操作:[初期設定]をON
◆場所移動:※行き先のマップへ

次に、部屋の中での初期設定を行うイベント。

イベント開始条件スイッチ:[初期設定] がON

イベント開始条件:自動的に始まる

◆画面のスクロール:※画面を中央に合わせてください
          速度は必ず6で、ウェイト有りで。
◆画面のスクロール:固定する
◆BGMの演奏:※部屋の中のBGMを
◆画面の表示:場所移動の設定
◆スイッチの操作:[初期設定]をOFF


以上で、ゼル伝風マップ移動システムの
解説を終了します。
・・・複雑な上、使い道ないかもしれませんが、
マップを作り終えた後、自己満足に浸れます(笑)。
また、それこそまさしくゼル伝のように
ダンジョンの謎解きを主とするRPGならば、
いちいち暗転しないこのシステムは意外と効果的かも
しれません。
ぜひ、お試しください。