RPGツクール2000/システム
最短ルート移動
■座標の位置で移動
(更新:2015/12/19)


出発地点と到着地点の座標の位置から移動方向を決定します。



なお、最短ルート移動にはいくつかの設定方法があります。
詳しくは一覧のページをご覧ください。
【最短ルート移動の一覧ページを開く】



☆特徴とサンプル
この座標の位置で移動は、マップ内をいくつかの部屋に区切り、
その部屋から部屋へと移動させて到着地点に近づける処理になります。

出発地点と到着地点の両者が同じ部屋内にいる場合は、
主人公に近寄る」や「座標の座で移動」など、別の移動処理が必要になります。



動作見本用のサンプルデータ
サンプルのダウンロードは↓をクリックしてください。
サンプルのイベント設定状況を見る場合は、
ツクールの作品データが入っているフォルダを開いて、
その中にサンプルの作品データを入れてください。
【ツクールのフォルダの開き方を見る】
このサンプルデータのイベント設定をコピー&貼り付けして、
制作中の作品に使用する場合は、
イベントの処理構造を理解した上自己責任でご利用ください。

動作確認用のサンプル内では正常に動いていたイベントが、
制作中の作品にコピー&貼り付けしたら正常に動かなくなった場合は、
明らかにコピー&貼り付けの作業に問題があった事になります。

サンプルには、別のマップまで敵が追いかけて来るが設定されており、
主人公を追いかけて2つのマップをイベントが行き来します。
【「別のマップまで敵が追いかけて来る」のページを開く】



☆処理構造の説明
マップ内をいくつかの部屋で区切り、その部屋ごとに行き来させる処理になります。

例えば、下の画像の場合、3つの部屋に仕切る事ができます。


「部屋1」「部屋2」「部屋3」で分けた場合、
両者がいるそれぞれの部屋の場所に合わせて、以下のように移動させます。
  到着地点が部屋1 到着地点が部屋2 到着地点が部屋3
出発地点が部屋1 近寄る X6以下=下移動
X7以上=左移動
X12以下=右移動
X13以上=下移動
出発地点が部屋2 上移動 近寄る 上移動
出発地点が部屋3 上移動 上移動 近寄る

「近寄る」の処理は、主人公が到着地点の場合は「主人公に近寄る」。
主人公以外が到着地点の場合は、別の最短ルート処理の「座標の差で移動」を使います。



マップを作成する場合、通り道になるマスには極力障害物を置かないようにしてください。
※部屋ごとに「このマスでは下に移動」と言った障害物を避ける設定は一応可能ですが、
 あまり細かい設定を行いますとイベント設定が巨大化し、処理落ちが発生しやすくなります。






基本的に部屋単位での最短ルート移動になるため、
両者がいる位置によっては、最短ルートとは言えない場合もあります。

例えば、下の画像の場合、最短ルートは上ルートになりますが、
この部屋からこの部屋までの移動は下ルート」と設定されている場合は、
少々遠回りの下ルートになります。


このような問題を改善するには、もっと細かい部屋割りにしたり、
部屋の中にいる座標によって移動ルートを変えたりする方法が有効です。

但し、あまりに細かく設定し過ぎると処理落ちが発生したり、
制作者側が複雑な設定に対応できず、設定ミスを起こしてしまう可能性があります。



☆変数
変数の番号使用内容の一覧表です。
※スイッチは使用しません。

変数
番号 名前 使用内容
0001 主人公の部屋位置 主人公がいる部屋の位置を設定
0002 主人公がいるXY 主人公がいるXY位置を設定
0003 XY XY位置を算出
0004 主人公のX座標 主人公のX座標を設定
0005 主人公のY座標 主人公のY座標を設定
0006 X座標 イベントのX座標を設定
0007 Y座標 イベントのY座標を設定
  
0101〜200 イベントの移動時間を設定

【変数の一覧表を別ウィンドウで表示する】



処理落ち対策のため、主人公の部屋の位置を調べる処理は、
主人公が移動したら更新するように設定されています。

主人公が移動したかどうかの判断は、
X座標×1000+Y座標」で保存したデータを比較して判断しています。

【この現在位置の保存方法の詳しい説明を見る】



☆イベントの設定
まず移動させるマップイベントを準備してください。

■マップイベント「移動キャラ01」
▼1ページ目
イベント出現条件:なし
イベント開始条件:イベントから触れたとき
グラフィック:自由に設定
移動タイプ:移動しない
移動速度:1/2倍速
イベント実行内容には、主人公がイベントに触れた時に実行するイベントを設定してください。



マップイベントに最短ルートを検索するイベントを設定してください。
移動設定は、以下のマップ形状で設定します。



▼主人公が部屋1にいる時の移動設定


▼主人公が部屋2にいる時の移動設定


▼主人公が部屋3にいる時の移動設定


キャラクターの動作指定の設定は全て、
移動頻度:8」「動作を繰り返す:OFF」「移動できない場合は無視:ON
になります。

■マップイベント「移動処理」
▼1ページ目
イベント出現条件:必要ならば設定
イベント開始条件:定期的に並列処理する
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:  :▼主人公の位置
:  : 

◆変数の操作:[0003〜0004]代入,主人公のX座標
◆変数の操作:[0003:XY]乗算,1000
◆変数の操作:[0003:XY]加算,主人公のY座標
◆変数の操作:[0005:主人公のY座標]代入,主人公のY座標
◆条件分岐:変数[0002:主人公がいるXY]がV[0003]以外<主人公が別のマップへ移動した時
 ◆変数の操作:[0002:主人公がいるXY]代入,変数[0003]の値
 ◆条件分岐:変数[0005:主人公のY座標]が5以下(オプション:ON)<部屋1にいる時
  ◆変数の操作:[0001:主人公の部屋位置]代入,1
  ◆
 :それ以外の場合<部屋1以外にいる時
  ◆条件分岐:変数[0004:主人公のX座標]が6以下(オプション:ON)<部屋2にいる時
   ◆変数の操作:[0001:主人公の部屋位置]代入,2
   ◆
  :それ以外の場合<部屋3にいる時
   ◆変数の操作:[0001:主人公の部屋位置]代入,3
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:■■■■■■■■■■■■■■■■■■■■■■■■■■■■
◆変数の操作:[0101:移動カウント:01]減算,1<移動中カウントを減算1
◆注釈:■■■■■■■■■■■■■■
:  :▼移動キャラ01
:  : 

◆条件分岐:変数[0101:移動カウント:01]が0以下<移動していない時
 ◆変数の操作:[0101:移動カウント:01]代入,16<移動時間を設定
 ◆変数の操作:[0006:X座標]代入,移動キャラ01のX座標
 ◆変数の操作:[0007:Y座標]代入,移動キャラ01のY座標
 ◆条件分岐:変数[0007:Y座標]が5以下(オプション:ON)<イベントが部屋1にいる時
  ◆注釈:■■■■■■■■■■■■■■
  :  :▼イベント位置【1】

  ◆条件分岐:変数[0001:主人公の部屋位置]が1(オプション:ON)<主人公が部屋1にいる時
   ◆キャラクターの動作指定:移動キャラ01,主人公に近寄る
   ◆
  :それ以外の場合<主人公が部屋1以外にいる時
   ◆条件分岐:変数[0001:主人公の部屋位置]が2(オプション:ON)<主人公が部屋2にいる時
    ◆条件分岐:変数[0006:X座標]が6以下
     ◆キャラクターの動作指定:移動キャラ01,下に移動
     ◆
    :それ以外の場合
     ◆キャラクターの動作指定:移動キャラ01,左に移動
     ◆
    :分岐終了
    ◆
   :それ以外の場合<主人公が部屋3にいる時
    ◆条件分岐:変数[0006:X座標]が12以下(オプション:ON)
     ◆キャラクターの動作指定:移動キャラ01,右に移動
     ◆
    :それ以外の場合
     ◆キャラクターの動作指定:移動キャラ01,下に移動
     ◆
    :分岐終了
    ◆
   :分岐終了
   ◆
   :分岐終了
  ◆
 :それ以外の場合<イベントが部屋1以外にいる時
  ◆条件分岐:変数[0006:X座標]が6以下(オプション:ON)<イベントが部屋2にいる時
   ◆注釈:■■■■■■■■■■■■■■
   :  :▼イベント位置【2】

   ◆条件分岐:変数[0001:主人公の部屋位置]が2(オプション:ON)
    ◆キャラクターの動作指定:移動キャラ01,主人公に近寄る
    ◆
   :それ以外の場合
    ◆キャラクターの動作指定:移動キャラ01,上に移動
    ◆
   :分岐終了
   ◆
  :それ以外の場合<イベントが部屋3にいる時
   ◆注釈:■■■■■■■■■■■■■■
   :  :▼イベント位置【3】

   ◆条件分岐:変数[0001:主人公の部屋位置]が3(オプション:ON)
    ◆キャラクターの動作指定:移動キャラ01,主人公に近寄る
    ◆
   :それ以外の場合
    ◆キャラクターの動作指定:移動キャラ01,上に移動
    ◆
   :分岐終了
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆
:分岐終了



以上で設定完了です。



他にも処理するマップイベントがある場合は、移動キャラ01と同じように設定してください。

【移動キャラ02の設定例を見る】



☆移動速度と移動頻度
移動キャラの移動速度によって、
◆変数の操作:[0101:移動カウント:01]代入,16
に設定する値が変わります。
速度 1/8倍速 1/4倍速 1/2倍速 標準速 2倍速 4倍速
代入値 64 32 16



移動頻度を下げる場合は、
◆条件分岐:変数[0101:移動カウント:01]が0以下
の設定を、
◆条件分岐:変数[0101:移動カウント:01]が-12以下
などと変えてください。



☆別マップへマップイベントをコピーする時の注意点
移動処理のマップイベントを別のマップへコピーした場合、
移動させるキャラのイベントID異なっていると、関係のないマップイベントが移動したり、
無効なイベントが指定されました」のエラーが発生したりします。

▼コピー元のマップと同じイベントIDでない場合は、移動処理の修正が必要です。


▼「無効なイベントが指定されました」のエラーが出た場合は、
 移動処理イベント実行内容の中に「?」が表示されたイベントコマンドがあるはずです。
 この「?」の設定を現在のマップにある移動キャラの合わせて設定し直すと、
 エラーが発生しなくなります。





◎関連ページ
 ●最短ルート移動に関して
 ○座標の差で移動
 ┣○座標の位置で移動
 ┣〇監視イベント+主人公がいたマスまで移動する
 ┗
○1マスずつ検索

 ●別のマップまで敵が追いかけて来る


YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール