RPGツクール2000/マップイベント
監視イベント
■主人公がいたマスまで移動する
(更新:2016/10/15)


主人公を監視するマップイベントに、
主人公がいたマスまで移動する処理を追加します。




このページは続きとなっているページです
監視イベントの基礎ページをご覧の上でこのページをご覧ください。
なお、基礎ページには、
このページの処理を含めたサンプルデータがあります。
【監視イベントの基礎ページを見る】

この色の部分は監視イベントのページにあった部分です。



☆処理構造の確認
監視イベントの視野内で主人公を見つけた場合、
主人公を最後に目撃したマスまでの最短ルートを変数に記憶し、
その最短ルートに沿って監視イベントが移動します。

最短ルートで移動しますので「主人公に近寄る」のような無駄な動きはなく、
また主人公が監視イベントの視野の外へ移動しても、
最後に目撃されたマスまでは移動し続けますので、
「主人公の近寄る」よりもしつこく追いかけて来ます。

監視イベントの視野に入っている限り、移動ルートは常に更新されますので、
監視イベントの視野の外で出ないと、いつまでも追いかけて来ます。

主人公が最後に目撃されたマスまで移動し終えると、
その場で監視処理を再開します。



「主人公に近寄る」よりも高機能ですが、その分処理構造が複雑であり、
監視イベントごとに移動ルートを記憶する変数が必要であったり、
監視イベントの移動処理を定期的に並列処理するで処理しているので、
「主人公に近寄る」よりも扱いが難しいです。

また変数の操作にある「変数〜の番号の変数」を使用しているので、
初心者向けではありません。
【変数〜の番号の変数に関するページを見る】

変数の操作の設定には「V」が付いている設定と付いていない設定が混在しています。
 V無し例:◆変数の操作:[0022:移動方向記憶変数]加算,1
 V有り例:◆変数の操作:[V[0022]]代入,変数[0025]の値




基礎ページにあった監視イベントは、
1ページ目=監視処理
2ページ目=主人公に近寄る

になっており、スイッチのON/OFFでページを切り替えていました。

しかし、このページの処理では、
監視処理主人公に近寄る処理1つのページで処理しており、
スイッチのON/OFFの処理は不要になりました。

そのため、基礎ページにあったマップイベント「監視復帰イベント」の設定は不要です。



☆移動ルートの記憶方法
移動ルートの記憶は、変数で記憶します。
この変数は監視イベントごとに個別に必要です。

設定例の監視イベントでは、変数101〜107番を使用しています。
※サンプルデータの2体目の監視イベントは変数111〜117番
 3体目の監視イベントは変数121〜127番を使用しています。


監視イベントごとに用意する変数は、
監視範囲で最も遠い歩数+2個」が必要です。

この場合は、最大5マスまで移動しますので、必要な変数の数は7個になります。
この7個の変数番号は必ず連番にしてください。



変数101番には「ウェイト時間」を記憶します。
これは次のマスへの移動時間を設定したもので、
監視イベントの移動速度に応じて以下のように設定します。
移動速度 ウェイト時間(60分の1秒単位)
4倍速
2倍速
標準速
1/2倍速 16
1/4倍速 32
1/8倍速 64



移動ルートは、
変数102番から順番に1マスごとの移動方向の値を記憶していきます。
移動方向 変数に記憶する値
下に移動
左に移動
右に移動
上に移動
主人公の方を向く 99
※「主人公の方を向く」は目的地に到着した時に実行されます。


仮にこのような動ルートである場合は、以下のように変数が設定されます。
変数番号 移動内容 変数に記憶する値
102番 左に移動
103番 上に移動
104番 左に移動
105番 左に移動
106番 左に移動
107番 目標地点到着 99

102番の移動が実行されると、
「103番→102番」「104番→103番」と移動情報が1個ずつ移動します。

なお、曲がる必要がある場合は、まず直進できる所まで直進してから曲がります。
▼以下のような条件では赤色のルートになります。
  



監視イベントが移動している時(ウェイト中)に、
監視イベントの隣りのマスに主人公がいるかどうかを調べる処理を実行します。
これにより、両者がすれ違った時に、
監視イベントが移動し過ぎないようにする事ができます。

設定なし
設定あり



☆変数
変数の番号使用内容の一覧表です。

※このページの処理ではスイッチを使いません。

変数
番号 名前 使用内容
0001 X座標 主人公のX座標を取得
0002 Y座標 主人公のY座標を取得
0003 監視用X座標 監視イベントのX座標を取得
0004 監視用Y座標 監視イベントのY座標を取得
0005 X座標± 調べるマスを変える時に使用
0006 Y座標± 調べるマスを変える時に使用
0007 地形ID 地形IDを取得する時に使用
  
0011 X座標01 監視イベントの向きが上下の時に、
監視イベントの1つ左側のマスを調べる時に使用
0012 X座標02 監視イベントと同じX座標のマスを調べる時に使用
0013 X座標03 監視イベントの向きが上下の時に、
監視イベントの1つ右側のマスを調べる時に使用
  
0016 Y座標01 監視イベントの向きが左右の時に、
監視イベントの1つ上側のマスを調べる時に使用
0017 Y座標02 監視イベントと同じY座標のマスを調べる時に使用
0018 Y座標03 監視イベントの向きが左右の時に、
監視イベントの1つ下側のマスを調べる時に使用
  
0021 ウェイト記憶変数 移動中ウェイトを記憶する変数番号を設定
0022 移動方向記憶変数 移動ルートを記憶する変数番号を設定
0023 変数の値移動:保存 移動ルートを記憶する変数の値をずらす時に使用
0024 変数の値移動:呼出 移動ルートを記憶する変数の値をずらす時に使用
0025 監視イベントの向き 監視イベントの向きを設定
0026 90度方向転換(上or左) 監視イベントの向きが左右→「8」を設定
監視イベントの向きが上下→「4」を設定
0027 90度方向転換(下or右) 監視イベントの向きが左右→「2」を設定
監視イベントの向きが上下→「6」を設定
0028 直進回数 障害物なく直進出来るマス数を設定
0029 出力:ウェイト 監視イベントの現在のウェイト値を設定
0030 出力:移動方向 監視イベントの次の移動方向を設定
  
0101 敵01:ウェイト 移動中=1以上
0102 敵01:移動方向01 次に移動する方向を記憶
0103 敵01:移動方向02 2マス先の移動方向を記憶
0104 敵01:移動方向03 3マス先の移動方向を記憶
0105 敵01:移動方向04 4マス先の移動方向を記憶
0106 敵01:移動方向05 5マス先の移動方向を記憶
0107 敵01:移動方向06 6マス先の移動方向を記憶

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



☆前方4マスの監視イベントに追加
壁を判断する監視イベントで紹介しているイベントに移動処理を追加します。
もしも壁を判断する処理が要らない場合は、この色の設定は不要です。

2ページ目を排しましたので、2ページを削除すると共に1ページ目の…
◆スイッチの操作:[0001:2ページ目起動]をONにする
◆イベント処理の中断

の設定も削除しています。



■マップイベント「監視イベント」
▼1ページ目
イベント出現条件:なし
イベント開始条件:定期的に並列処理する
移動速度:1/2倍速
◆変数の操作:[0001:X座標]代入,主人公のX座標
◆変数の操作:[0002:Y座標]代入,主人公のY座標
◆変数の操作:[0003:監視用X座標]代入,このイベントのX座標
◆変数の操作:[0004:監視用Y座標]代入,このイベントのY座標
◆変数の操作:[0005〜0006]代入,0
◆変数の操作:[0021〜0024]代入,101<この監視イベントの移動ルートを記憶する変数番号を設定
◆変数の操作:[0022〜0023]加算,1
◆変数の操作:[0024:変数の値移動:呼出]加算,2

◆条件分岐:このイベントが左を向いている
 ◆変数の操作:[0005:X座標±]代入,-1
 ◆変数の操作:[0025:監視イベントの向き]代入,4
 ◆
:それ以外の場合
 ◆条件分岐:このイベントが右を向いている
  ◆変数の操作:[0005:X座標±]代入,1
  ◆変数の操作:[0025:監視イベントの向き]代入,6
  ◆
 :それ以外の場合
  ◆条件分岐:このイベントが上を向いている
   ◆変数の操作:[0006:Y座標±]代入,-1
   ◆変数の操作:[0025:監視イベントの向き]代入,8
   ◆
  :それ以外の場合
   ◆変数の操作:[0006:Y座標±]代入,1
   ◆変数の操作:[0025:監視イベントの向き]代入,2
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:1マス目
◆変数の操作:[0003:監視用X座標]加算,変数[0005]の値
◆変数の操作:[0004:監視用Y座標]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0003],V[0004]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了

◆条件分岐:変数[0003:監視用X座標]がV[0001]と同値
 ◆条件分岐:変数[0004:監視用Y座標]がV[0002]と同値<主人公が目の前にいる時
  ◆変数の操作:[V[0021]]減算,1<ウェイトを値を1減らす
  ◆変数の操作:[0029:出力:ウェイト]代入,変数[V[0021]]の値<現在のウディタ値を出力
  ◆条件分岐:変数[0029:出力:ウェイト]が1以上<移動中の時
   ◆イベント処理の中断
   ◆
  :分岐終了
  ◆キャラクターの動作指定:このイベント,主人公の方を向く
  ◆〜主人公に触れた時のイベント〜
  ◆イベント処理の中断

  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:2マス目
◆変数の操作:[0003:監視用X座標]加算,変数[0005]の値
◆変数の操作:[0004:監視用Y座標]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0003],V[0004]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了

◆条件分岐:変数[0003:監視用X座標]がV[0001]と同値
 ◆条件分岐:変数[0004:監視用Y座標]がV[0002]と同値<主人公が2マス先にいる時
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:3マス目
◆変数の操作:[0003:監視用X座標]加算,変数[0005]の値
◆変数の操作:[0004:監視用Y座標]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0003],V[0004]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了

◆条件分岐:変数[0003:監視用X座標]がV[0001]と同値
 ◆条件分岐:変数[0004:監視用Y座標]がV[0002]と同値<主人公が3マス先にいる時
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:4マス目
◆変数の操作:[0003:監視用X座標]加算,変数[0005]の値
◆変数の操作:[0004:監視用Y座標]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0003],V[0004]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了

◆条件分岐:変数[0003:監視用X座標]がV[0001]と同値
 ◆条件分岐:変数[0004:監視用Y座標]がV[0002]と同値<主人公が4マス先にいる時
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:------------------------------
:  :主人公へ近づく処理
:  : 

◆ラベルの設定:1番
◆変数の操作:[V[0021]]減算,1<ウェイトを値を1減らす
◆変数の操作:[0029:出力:ウェイト]代入,変数[V[0021]]の値<現在のウディタ値を出力
◆条件分岐:変数[0029:出力:ウェイト]が1以上<移動中の時
 ◆変数の操作:[0001:X座標]代入,主人公のX座標
 ◆変数の操作:[0002:Y座標]代入,主人公のY座標
 ◆変数の操作:[0001:X座標]減算,このイベントのX座標
 ◆変数の操作:[0002:Y座標]減算,このイベントのY座標
 ◆条件分岐:変数[0001:X座標]が-1以下
  ◆変数の操作:[0001:X座標]乗算,-1
  ◆
 :分岐終了
 ◆条件分岐:変数[0002:Y座標]が-1以下
  ◆変数の操作:[0002:Y座標]乗算,-1
  ◆
 :分岐終了
 ◆変数の操作:[0001:X座標]加算,変数[0002]の値
 ◆条件分岐:変数[0001:X座標]が1<主人公が隣のマスにいる時
  ◆変数の操作:[V[0023]]代入,99<移動終了後に主人公の方を向くように設定
  ◆
 :分岐終了
 ◆イベント処理の中断
 ◆
:分岐終了
◆変数の操作:[0030:出力:移動方向]代入,変数[V[0023]]の値<次に移動する方向を出力
◆条件分岐:変数[0030:出力:移動方向]が0<移動する方向が無い時(この場で待機)
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が99<主人公の方を向かせる番号の時
 ◆キャラクターの動作指定:このイベント,主人公の方を向く
 ◆変数の操作:[V[0023]]代入,0<次の行動は「何もしない(待機)」とする
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が2<下に移動させる番号の時
 ◆キャラクターの動作指定:このイベント,下に移動
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が4<左に移動させる番号の時
 ◆キャラクターの動作指定:このイベント,左に移動
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が6<右に移動させる番号の時
 ◆キャラクターの動作指定:このイベント,右に移動
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が8<上に移動させる番号の時
 ◆キャラクターの動作指定:このイベント,上に移動
 ◆
:分岐終了
◆変数の操作:[V[0021]]代入,16<ウェイト設定(1/2倍速の場合)
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値<移動ルートの情報を1つずつすらず
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値



▼2ページ目※2ページ目は削除してください。



☆前方4マス×幅3マスの監視イベントに追加
壁を判断する監視イベントで紹介しているイベントに移動処理を追加します。
もしも壁を判断する処理が要らない場合は、別ページに用意した設定例をご覧ください。
【壁を判断する処理が要らない場合は設定例を見る】

2ページ目を排しましたので、2ページを削除すると共に1ページ目の…
◆スイッチの操作:[0001:2ページ目起動]をONにする
◆イベント処理の中断

の設定も削除しています。



イベントコマンドの補足に、
<移動ルート「前前上(左)」の設定」などと書かれている場合があります。
これは移動ルートの設定状態を示したものです。
補足の表示 内容
監視イベントが向いている方向に進む場合。
左向きの場合は、左に移動。
上(左) 左右向きの場合は、上に移動。
上下向きの場合は、左に移動。
下(右) 左右向きの場合は、下に移動。
上下向きの場合は、右に移動。


この場合は「<移動ルート「前上(左)前前前」の設定」になります。



■マップイベント「監視イベント」
▼1ページ目
イベント出現条件:なし
イベント開始条件:定期的に並列処理する
移動速度:1/2倍速
◆変数の操作:[0001:X座標]代入,主人公のX座標
◆変数の操作:[0002:Y座標]代入,主人公のY座標
◆変数の操作:[0005〜0006]代入,0
◆変数の操作:[0011〜0013]代入,このイベントのX座標
◆変数の操作:[0016〜0018]代入,このイベントのY座標
◆変数の操作:[0021〜0024]代入,101<この監視イベントの移動ルートを記憶する変数番号を設定
◆変数の操作:[0022〜0023]加算,1
◆変数の操作:[0024:変数の値移動:呼出]加算,2
◆変数の操作:[0025:監視イベントの向き]代入,このイベントの向き

◆条件分岐:このイベントが左を向いている
 ◆変数の操作:[0005:X座標±]代入,-1
 ◆変数の操作:[0016:Y座標01]加算,-1
 ◆変数の操作:[0018:Y座標03]加算,1
 ◆変数の操作:[0026:90度方向転換(上or左)]代入,8
 ◆変数の操作:[0027:90度方向転換(下or右)]代入,2

 ◆
:それ以外の場合
 ◆条件分岐:このイベントが右を向いている
  ◆変数の操作:[0005:X座標±]代入,1
  ◆変数の操作:[0016:Y座標01]加算,-1
  ◆変数の操作:[0018:Y座標03]加算,1
  ◆変数の操作:[0026:90度方向転換(上or左)]代入,8
  ◆変数の操作:[0027:90度方向転換(下or右)]代入,2

  ◆
 :それ以外の場合
  ◆変数の操作:[0011:X座標01]加算,-1
  ◆変数の操作:[0013:X座標03]加算,1
  ◆変数の操作:[0026:90度方向転換(上or左)]代入,4
  ◆変数の操作:[0027:90度方向転換(下or右)]代入,6

  ◆条件分岐:このイベントが上を向いている
   ◆変数の操作:[0006:Y座標±]代入,-1
   ◆
  :それ以外の場合
   ◆変数の操作:[0006:Y座標±]代入,1
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:------------------------------
:  :1列目
:  : 

◆変数の操作:[0011〜0013]加算,変数[0005]の値
◆変数の操作:[0016〜0018]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0011],V[0016]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆変数の操作:[0011:X座標01]減算,変数[0005]の値
 ◆変数の操作:[0016:Y座標01]減算,変数[0006]の値
 ◆
:分岐終了
◆指定位置の地形ID取得:(V[0012],V[0017]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2(オプション:ON)<オプションを設定
 ◆指定ラベルへ飛ぶ:1番
 ◆
:それ以外の場合<主人公の目の前の地形が移動可能である時
 ◆変数の操作:[0028:直進回数]代入,1
 ◆

:分岐終了
◆指定位置の地形ID取得:(V[0013],V[0018]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆変数の操作:[0013:X座標03]減算,変数[0005]の値
 ◆変数の操作:[0018:Y座標03]減算,変数[0006]の値
 ◆
:分岐終了
◆条件分岐:変数[0011:X座標01]がV[0001]と同値
 ◆条件分岐:変数[0016:Y座標01]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値<移動ルート「前上(左)」の設定
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0026]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0003:監視用X座標]がV[0001]と同値
 ◆条件分岐:変数[0004:監視用Y座標]がV[0002]と同値<主人公が目の前にいる時
  ◆変数の操作:[V[0021]]減算,1<ウェイトを値を1減らす
  ◆変数の操作:[0029:出力:ウェイト]代入,変数[V[0021]]の値<現在のウディタ値を出力
  ◆条件分岐:変数[0029:出力:ウェイト]が1以上<移動中の時
   ◆イベント処理の中断
   ◆
  :分岐終了
  ◆キャラクターの動作指定:このイベント,主人公の方を向く
  ◆〜主人公に触れた時のイベント〜
  ◆イベント処理の中断

  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0013:X座標03]がV[0001]と同値
 ◆条件分岐:変数[0018:Y座標03]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値<移動ルート「前下(右)」の設定
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0027]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:------------------------------
:  :2列目
:  : 

◆変数の操作:[0011〜0013]加算,変数[0005]の値
◆変数の操作:[0016〜0018]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0011],V[0016]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆変数の操作:[0011:X座標01]減算,変数[0005]の値
 ◆変数の操作:[0016:Y座標01]減算,変数[0006]の値
 ◆
:分岐終了
◆指定位置の地形ID取得:(V[0012],V[0017]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2(オプション:ON)<オプションを設定
 ◆変数の操作:[0012:X座標02]減算,変数[0005]の値
 ◆変数の操作:[0017:Y座標02]減算,変数[0006]の値
 ◆
:それ以外の場合<主人公の前方2マス先の地形が移動可能である時
 ◆変数の操作:[0028:直進回数]加算,1
 ◆

:分岐終了
◆指定位置の地形ID取得:(V[0013],V[0018]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆変数の操作:[0013:X座標03]減算,変数[0005]の値
 ◆変数の操作:[0018:Y座標03]減算,変数[0006]の値
 ◆
:分岐終了
◆条件分岐:変数[0011:X座標01]がV[0001]と同値
 ◆条件分岐:変数[0016:Y座標01]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆条件分岐:変数[0028:直進回数]が1(オプション:ON)<移動ルート「前上(左)前」の設定
   ◆変数の操作:[V[0022]]代入,変数[0026]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆
  :それ以外の場合<移動ルート「前前上(左)」の設定
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0026]の値
   ◆
  :分岐終了
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0012:X座標02]がV[0001]と同値
 ◆条件分岐:変数[0017:Y座標02]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値<移動ルート「前前」の設定
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0013:X座標03]がV[0001]と同値
 ◆条件分岐:変数[0018:Y座標03]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆条件分岐:変数[0028:直進回数]が1(オプション:ON)<移動ルート「前下(右)前」の設定
   ◆変数の操作:[V[0022]]代入,変数[0027]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆
  :それ以外の場合<移動ルート「前前下(右)」の設定
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0027]の値
   ◆
  :分岐終了
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:------------------------------
:  :3列目
:  : 

◆変数の操作:[0011〜0013]加算,変数[0005]の値
◆変数の操作:[0016〜0018]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0011],V[0016]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆変数の操作:[0011:X座標01]減算,変数[0005]の値
 ◆変数の操作:[0016:Y座標01]減算,変数[0006]の値
 ◆
:分岐終了
◆指定位置の地形ID取得:(V[0012],V[0017]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2(オプション:ON)<オプションを設定
 ◆変数の操作:[0012:X座標02]減算,変数[0005]の値
 ◆変数の操作:[0017:Y座標02]減算,変数[0006]の値
 ◆
:それ以外の場合<主人公の前方3マス先の地形が移動可能である時
 ◆条件分岐:変数[0028:直進回数]が2<途中に壁が無く、直進が2マス続いている時
  ◆変数の操作:[0028:直進回数]加算,1
  ◆
 :分岐終了
 ◆

:分岐終了
◆指定位置の地形ID取得:(V[0013],V[0018]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆変数の操作:[0013:X座標03]減算,変数[0005]の値
 ◆変数の操作:[0018:Y座標03]減算,変数[0006]の値
 ◆
:分岐終了
◆条件分岐:変数[0011:X座標01]がV[0001]と同値
 ◆条件分岐:変数[0016:Y座標01]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆条件分岐:変数[0028:直進回数]が1(オプション:ON)<移動ルート「前上(左)前前」の設定
   ◆変数の操作:[V[0022]]代入,変数[0026]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆
  :それ以外の場合
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆条件分岐:変数[0028:直進回数]が2(オプション:ON)<移動ルート「前前上(左)前」の設定
    ◆変数の操作:[V[0022]]代入,変数[0026]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆
   :それ以外の場合<移動ルート「前前前上(左)」の設定
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆変数の操作:[V[0022]]代入,変数[0026]の値
    ◆
   :分岐終了
   ◆
  :分岐終了
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0012:X座標02]がV[0001]と同値
 ◆条件分岐:変数[0017:Y座標02]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値<移動ルート「前前前」の設定
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0013:X座標03]がV[0001]と同値
 ◆条件分岐:変数[0018:Y座標03]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆条件分岐:変数[0028:直進回数]が1(オプション:ON)<移動ルート「前下(右)前前」の設定
   ◆変数の操作:[V[0022]]代入,変数[0027]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆
  :それ以外の場合
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆条件分岐:変数[0028:直進回数]が2(オプション:ON)<移動ルート「前前下(右)前」の設定
    ◆変数の操作:[V[0022]]代入,変数[0027]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆
   :それ以外の場合<移動ルート「前前前下(右)」の設定
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆変数の操作:[V[0022]]代入,変数[0027]の値
    ◆
   :分岐終了
   ◆
  :分岐終了
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:------------------------------
:  :4列目
:  : 

◆変数の操作:[0011〜0013]加算,変数[0005]の値
◆変数の操作:[0016〜0018]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0011],V[0016]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆変数の操作:[0011:X座標01]減算,変数[0005]の値
 ◆変数の操作:[0016:Y座標01]減算,変数[0006]の値
 ◆
:分岐終了
◆指定位置の地形ID取得:(V[0012],V[0017]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2(オプション:ON)<オプションを設定
 ◆変数の操作:[0012:X座標02]減算,変数[0005]の値
 ◆変数の操作:[0017:Y座標02]減算,変数[0006]の値
 ◆
:それ以外の場合<主人公の前方4マス先の地形が移動可能である時
 ◆条件分岐:変数[0028:直進回数]が3<途中に壁が無く、直進が3マス続いている時
  ◆変数の操作:[0028:直進回数]加算,1
  ◆
 :分岐終了
 ◆

:分岐終了
◆指定位置の地形ID取得:(V[0013],V[0018]),[0007:地形ID]
◆条件分岐:変数[0007:地形ID]が2
 ◆変数の操作:[0013:X座標03]減算,変数[0005]の値
 ◆変数の操作:[0018:Y座標03]減算,変数[0006]の値
 ◆
:分岐終了
◆条件分岐:変数[0011:X座標01]がV[0001]と同値
 ◆条件分岐:変数[0016:Y座標01]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆条件分岐:変数[0028:直進回数]が1(オプション:ON)<移動ルート「前上(左)前前前」の設定
   ◆変数の操作:[V[0022]]代入,変数[0026]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆
  :それ以外の場合
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆条件分岐:変数[0028:直進回数]が2(オプション:ON)<移動ルート「前前上(左)前前」の設定
    ◆変数の操作:[V[0022]]代入,変数[0026]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆
   :それ以外の場合
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆条件分岐:変数[0028:直進回数]が3(オプション:ON)<移動ルート「前前前上(左)前」の設定
     ◆変数の操作:[V[0022]]代入,変数[0026]の値
     ◆変数の操作:[0022:移動方向記憶変数]加算,1
     ◆変数の操作:[V[0022]]代入,変数[0025]の値
     ◆
    :それ以外の場合<移動ルート「前前前前上(左)」の設定
     ◆変数の操作:[V[0022]]代入,変数[0025]の値
     ◆変数の操作:[0022:移動方向記憶変数]加算,1
     ◆変数の操作:[V[0022]]代入,変数[0026]の値
     ◆
    :分岐終了
    ◆
   :分岐終了
   ◆
  :分岐終了
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0012:X座標02]がV[0001]と同値
 ◆条件分岐:変数[0017:Y座標02]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値<移動ルート「前前前前」の設定
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0013:X座標03]がV[0001]と同値
 ◆条件分岐:変数[0018:Y座標03]がV[0002]と同値
  ◆変数の操作:[V[0022]]代入,変数[0025]の値
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆条件分岐:変数[0028:直進回数]が1(オプション:ON)<移動ルート「前下(右)前前前」の設定
   ◆変数の操作:[V[0022]]代入,変数[0027]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆
  :それ以外の場合
   ◆変数の操作:[V[0022]]代入,変数[0025]の値
   ◆変数の操作:[0022:移動方向記憶変数]加算,1
   ◆条件分岐:変数[0028:直進回数]が2(オプション:ON)<移動ルート「前前下(右)前前」の設定
    ◆変数の操作:[V[0022]]代入,変数[0027]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆
   :それ以外の場合
    ◆変数の操作:[V[0022]]代入,変数[0025]の値
    ◆変数の操作:[0022:移動方向記憶変数]加算,1
    ◆条件分岐:変数[0028:直進回数]が3(オプション:ON)<移動ルート「前前前下(右)前」の設定
     ◆変数の操作:[V[0022]]代入,変数[0027]の値
     ◆変数の操作:[0022:移動方向記憶変数]加算,1
     ◆変数の操作:[V[0022]]代入,変数[0025]の値
     ◆
    :それ以外の場合<移動ルート「前前前前下(右)」の設定
     ◆変数の操作:[V[0022]]代入,変数[0025]の値
     ◆変数の操作:[0022:移動方向記憶変数]加算,1
     ◆変数の操作:[V[0022]]代入,変数[0027]の値
     ◆
    :分岐終了
    ◆
   :分岐終了
   ◆
  :分岐終了
  ◆変数の操作:[0022:移動方向記憶変数]加算,1
  ◆変数の操作:[V[0022]]代入,99

  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:------------------------------
:  :主人公へ近づく処理
:  : 

◆ラベルの設定:1番
◆変数の操作:[V[0021]]減算,1<ウェイトを値を1減らす
◆変数の操作:[0029:出力:ウェイト]代入,変数[V[0021]]の値<現在のウディタ値を出力
◆条件分岐:変数[0029:出力:ウェイト]が1以上<移動中の時
 ◆変数の操作:[0001:X座標]代入,主人公のX座標
 ◆変数の操作:[0002:Y座標]代入,主人公のY座標
 ◆変数の操作:[0001:X座標]減算,このイベントのX座標
 ◆変数の操作:[0002:Y座標]減算,このイベントのY座標
 ◆条件分岐:変数[0001:X座標]が-1以下
  ◆変数の操作:[0001:X座標]乗算,-1
  ◆
 :分岐終了
 ◆条件分岐:変数[0002:Y座標]が-1以下
  ◆変数の操作:[0002:Y座標]乗算,-1
  ◆
 :分岐終了
 ◆変数の操作:[0001:X座標]加算,変数[0002]の値
 ◆条件分岐:変数[0001:X座標]が1<主人公が隣のマスにいる時
  ◆変数の操作:[V[0023]]代入,99<移動終了後に主人公の方を向くように設定
  ◆
 :分岐終了
 ◆イベント処理の中断
 ◆
:分岐終了
◆変数の操作:[0030:出力:移動方向]代入,変数[V[0023]]の値<次に移動する方向を出力
◆条件分岐:変数[0030:出力:移動方向]が0<移動する方向が無い時(この場で待機)
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が99<主人公の方を向かせる番号の時
 ◆キャラクターの動作指定:このイベント,主人公の方を向く
 ◆変数の操作:[V[0023]]代入,0<次の行動は「何もしない(待機)」とする
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が2<下に移動させる番号の時
 ◆キャラクターの動作指定:このイベント,下に移動
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が4<左に移動させる番号の時
 ◆キャラクターの動作指定:このイベント,左に移動
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が6<右に移動させる番号の時
 ◆キャラクターの動作指定:このイベント,右に移動
 ◆
:分岐終了
◆条件分岐:変数[0030:出力:移動方向]が8<上に移動させる番号の時
 ◆キャラクターの動作指定:このイベント,上に移動
 ◆
:分岐終了
◆変数の操作:[V[0021]]代入,16<ウェイト設定(1/2倍速の場合)
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値<移動ルートの情報を1つずつすらず
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値
◆変数の操作:[0023〜0024]加算,1
◆変数の操作:[V[0023]]代入,変数[V[0024]]の値



▼2ページ目※2ページ目は削除してください。



☆監視イベントを増やす場合
監視イベントを増やす場合は、まず作成した監視イベントを複製してください。
そして、
◆変数の操作:[0021〜0024]代入,101
の「101」の値を「111」などにしてください。
「111」にした場合は「変数111〜117番を使用する」になります。

なお、変数108〜110番は使用していないので、
2体目の変数を「◆変数の操作:[0021〜0024]代入,108」にしても問題ありませんが、
変数の番号を10番単位、または20番単位に区切って使用した方が分かりやすいので、
2体目は「◆変数の操作:[0021〜0024]代入,111
3体目は「◆変数の操作:[0021〜0024]代入,121」とした方が良いでしょう。



移動速度を「標準速」に変える場合は、
◆変数の操作:[V[0021]]代入,16
の「16」の値を「8」に変えてください。



◎関連ページ
 ●監視イベント
 ○壁を判断する監視イベント
 ┗
○主人公がいたマスまで移動する


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