マップ端へ行ったら
過去ブログの転載です。
FFやドラクエの多くのRPGでは、町などのマップ端へ行くとフィールドマップに出られますよね。これにより、入口から出なければならない面倒さがなくなります。出たいときに端へ行けば出られます。
RPGツクール2000でコレを作ろうと、マップ端すべての箇所にイベントを置いて、そのイベントを踏んだらマップ外に出る、とすることも出来ますが、やっぱりタイヘンなので、そうしなくてもいいようにする方法を記載します。
町のマップの左上端かどこかに、次のようなイベントを配置します。このイベントで定期的に並列処理により、主人公の座標がマップ端になっているか調べて、端に来ていたら移動させる、とすればOKです。
マップの大きさが50×40なら、こんな感じ:
【1ページ目:定期的に並列処理する】
◇変数の操作:[0001:マップ大きさX]代入,50
◇変数の操作:[0002:マップ大きさY]代入,40
◆スイッチの操作:[0001:マップ端へ行った]をOFFにする
◆変数の操作:[0001~0002]減算,1
◆現在の場所を記憶:[0003],[0003],[0004]
◆条件分岐:変数[0003:現在地:X]が0
◆スイッチの操作:[0001:マップ端へ行った]をONにする
◆
:分岐終了
◆条件分岐:変数[0004:現在地:Y]が0
◆スイッチの操作:[0001:マップ端へ行った]をONにする
◆
:分岐終了
◆条件分岐:変数[0003:現在地:X]がV[0001]と同値
◆スイッチの操作:[0001:マップ端へ行った]をONにする
◆
:分岐終了
◆条件分岐:変数[0004:現在地:Y]がV[0002]と同値
◆スイッチの操作:[0001:マップ端へ行った]をONにする
◆
:分岐終了
◆
【2ページ目:自動的に始まる】
『条件:スイッチ[0001:マップ端へ行った]がON』◆ウェイト:0.1秒
◆ウェイト:0.0秒
◆画面の消去:場所移動の設定
◆場所移動:(どっか)
◆スイッチの操作:[0001:マップ端へ行った]をOFFにする
◆画面の表示:場所移動の設定
◆
2ページ目の「ウェイト0.1秒+0.0秒」の処理ですが、これは主人公の移動速度が標準速だった場合に必要な待ち時間になります。これがないと、主人公がマップ端のマスを踏みかかった瞬間に移動が始まってしまうので、とても違和感のあるマップ移動になってしまいます。
主人公の移動速度に合わせたウェイト時間は下記の通りです。
【1/8倍速の場合(63/60秒のウェイト)】
◆ウェイト:1.0秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
【1/4倍速の場合(31/60秒のウェイト)】
◆ウェイト:0.5秒
◆ウェイト:0.0秒
【1/2倍速の場合(15/60秒のウェイト)】
◆ウェイト:0.2秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
【標準速の場合(7/60秒のウェイト)】
◆ウェイト:0.1秒
◆ウェイト:0.0秒
【2倍速の場合(3/60秒のウェイト)】
◆ウェイト:0.0秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒
【4倍速の場合(1/60秒のウェイト)】
◆ウェイト:0.0秒
座標はそのマスを踏んだ瞬間(移動して1/60秒後)に決まるので、こういうウェイトをはさんで、完全にそのマスに入るまで待ってやる必要があるんですね。