RPGツクール2000/演出
穴に落ちて下の階へ移動する
■穴の上に移動床を設定
(更新:2016/05/07)


主人公が移動すると落ちる穴の地形の上に、
主人公が乗る事ができる移動床を設定する方法を紹介します。

▼上下に移動する移動床の設定例


このページは応用ページです
このページは応用ページであり、
基礎ページ穴に落ちて下の階へ移動するになります。
【穴に落ちて下の階へ移動するのページを開く】

まず基礎ページのイベントを設定して頂き、問題なく動いた後に、
このページで紹介している改良を行った方が良いでしょう。

基礎ページと同じイベント設定は、この色で表示しています。



☆地形IDを準備する
データベース「地形」にて、穴の地形IDを準備してください。
今回は穴の地形IDを11番として設定します。


データベース:チップセットにて穴とする下層チップに、
地形番号11番を設定してください。


穴の下層チップの通行設定は、
通行可能にしてください。


以上で地形IDの準備は完了です。



☆グラフィックの準備
移動床用のグラフィックを用意してください。
グラフィックの種類は、
チップセットの上層チップでもキャラセットでもどちらでも構いません。

なお、チップセットの上層チップの場合は、
通行設定通行可能な状態にしてください。




☆移動床の設定
移動床は、マップイベントで作成します。

■マップイベント「移動床」
イベント出現条件:なし
イベント開始条件:決定キーが押されたとき
グラフィック:移動床のグラフィック
プライオリティタイプ:通常キャラの下
移動速度:1/2倍速
イベント実行内容には何も設定しません。



1つの移動床の設定が終わりましたら、
あとは必要な数だけコピー&貼り付けで増やしてください。

移動タイプは自由に設定する事ができます。
特殊な移動を行う場合は、移動ルート指定で設定してください。
移動ルートの設定では、移動速度は変えないでください。

移動速度は、1/2倍速くらいが望ましいです。
あまり速くしますと、主人公の移動タイミングが難しくなります。

移動床ごとに多少の移動速度の変化を付けたい時には、
移動頻度の設定を変えてください。
移動速度は同じですが、見た目は速度が変わっているように見えます。



☆移動しない床イベントを置く場合
穴の地形の上に、
移動するマップイベントと、
移動しないマップイベントを設定する時の設定方法です。


この場合、必ず移動しないマップイベントのイベントIDは、
移動できるマップイベントのイベントIDよりも大きいイベントIDにしてください。


このページの設定では、
イベントID1〜3番:移動床
イベントID4番以上:
移動しない床
と判断して処理されます。



☆落下&移動床の処理イベントを設定
穴に落ちたかどうか、移動床に乗っているかどうかを判断するイベントを設定します。

変数
番号 名前 使用内容
0001 X座標 主人公のX座標を設定
0002 Y座標 主人公のY座標を設定
0003 ID 地形IDを取得する時に使用
0004 画面移動中チェックX 移動中かどうかを画面位置でチェック
0005 画面移動中チェックY 移動中かどうかを画面位置でチェック
  
0021 画面位置X01 移動床01と主人公との画面Xの距離を設定
0022 画面位置X02 移動床02と主人公との画面Xの距離を設定
0023 画面位置X03 移動床03と主人公との画面Xの距離を設定
  
0031 画面位置Y01 移動床01と主人公との画面Yの距離を設定
0032 画面位置Y02 移動床02と主人公との画面Yの距離を設定
0033 画面位置Y03 移動床03と主人公との画面Yの距離を設定

このイベントは、マップイベントとして設定してください。

■マップイベント「落下&移動床」
イベント開始条件:定期的に並列処理する
グラフィック:透明
◆変数の操作:[0001:X座標]代入,主人公のX座標
◆変数の操作:[0002:Y座標]代入,主人公のY座標
◆注釈:------------------------------
:  :▼穴の地形IDチェック
:  : 

◆指定位置の地形ID取得:(V[0001],V[0002]),[0003:ID]
◆条件分岐:変数[0003:ID]が11以外<穴の地形IDでは無い時
 ◆イベント処理の中断
 ◆
:分岐終了
◆注釈:------------------------------
:  :▼移動しないイベントの有無をチェック
:  : 

◆指定位置のイベントID取得:(V[0001],V[0002]),[0003:ID]
◆条件分岐:変数[0003:ID]が4以上<移動しないイベント床がある時
 ◆イベント処理の中断
 ◆
:分岐終了
◆注釈:------------------------------
:  :▼移動床乗っているかチェック
:  : 

◆変数の操作:[0021〜0030]代入,主人公の画面X
◆変数の操作:[0031〜0040]代入,主人公の画面Y
◆変数の操作:[0021:画面位置X01]減算,EV0001の画面X
◆変数の操作:[0022:画面位置X02]減算,EV0002の画面X
◆変数の操作:[0023:画面位置X03]減算,EV0003の画面X
◆変数の操作:[0031:画面位置Y01]減算,EV0001の画面Y
◆変数の操作:[0032:画面位置Y02]減算,EV0002の画面Y
◆変数の操作:[0033:画面位置Y03]減算,EV0003の画面Y
◆変数の操作:[0021〜0040]除算,16
◆条件分岐:変数[0021:画面位置X01]が0
 ◆条件分岐:変数[0031:画面位置Y01]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0022:画面位置X02]が0
 ◆条件分岐:変数[0032:画面位置Y02]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0023:画面位置X03]が0
 ◆条件分岐:変数[0033:画面位置Y03]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:------------------------------
:  :▼移動中チェック
:  : 

◆変数の操作:[0004:画面移動中チェックX]代入,主人公の画面X
◆変数の操作:[0005:画面移動中チェックY]代入,主人公の画面Y
◆変数の操作:[0004:画面移動中チェックX]減算,このイベントの画面X
◆変数の操作:[0005:画面移動中チェックY]減算,このイベントの画面Y
◆変数の操作:[0004〜0005]剰余,16
◆条件分岐:変数[0004:画面移動中チェックX]が0以外<現在移動中
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0005:画面移動中チェックY]が0以外<現在移動中
 ◆イベント処理の中断
 ◆
:分岐終了
◆注釈:------------------------------
:  :▼穴の上+移動床乗ってない
:  : 

◆効果音の演奏:落ちる2
◆場所移動:〜落下地点〜



以上で設定完了です。



☆移動床の移動に合わせて主人公も移動させる
上記の☆落下判断イベントでは、
主人公が移動床の上に乗り続けても、
移動床が移動しますと、穴に落ちてしまいます。


これを移動床の移動に合わせて、主人公も移動させるように改良します。


スイッチ
番号 名前 使用内容
0001 移動床に合わせて移動 イベントの呼び出し先で使用

変数
番号 名前 使用内容
0001 X座標 主人公のX座標を設定
0002 Y座標 主人公のY座標を設定
0003 ID 地形IDを取得する時に使用
0004 画面移動中チェックX 移動中かどうかを画面位置でチェック
0005 画面移動中チェックY 移動中かどうかを画面位置でチェック
0006 移動床ID 主人公が乗っている移動床のイベントIDを記憶
0007 1ページ 移動床の1ページ目を呼び出す時に使用
0008 現在のXY 主人公の現在位置を記憶
0009 前のXY 変数0008番の値と比較し、主人公の移動有無の判断に使用
  
0021 画面位置X01 移動床01と主人公との画面Xの距離を設定
0022 画面位置X02 移動床02と主人公との画面Xの距離を設定
0023 画面位置X03 移動床03と主人公との画面Xの距離を設定
  
0031 画面位置Y01 移動床01と主人公との画面Yの距離を設定
0032 画面位置Y02 移動床02と主人公との画面Yの距離を設定
0033 画面位置Y03 移動床03と主人公との画面Yの距離を設定

変数0008番、変数0009番の値は、
X座標×1000+Y座標」の計算で出された数値を記憶します。
この計算処理は、歩くと実行するイベントで紹介しているもので、
歩いているかどうかを判断する時に使います。
もしも変数0008番と変数0009番の値が異なっている時には、
主人公が移動したと判断する事ができます。
【歩くと実行するイベントのページを見る】


今回の設定では、
移動床のイベントID1〜3番である時の設定例です。

■マップイベント「落下&移動床」
イベント開始条件:定期的に並列処理する
グラフィック:透明
◆変数の操作:[0001:X座標]代入,主人公のX座標
◆変数の操作:[0002:Y座標]代入,主人公のY座標
◆注釈:------------------------------
:  :▼穴の地形IDチェック
:  : 

◆指定位置の地形ID取得:(V[0001],V[0002]),[0003:ID]
◆条件分岐:変数[0003:ID]が11以外
 ◆変数の操作:[0006:移動床ID]代入,0
 ◆イベント処理の中断
 ◆
:分岐終了
◆注釈:------------------------------
:  :▼主人公移動チェック
:  : 

◆変数の操作:[0008:現在のXY]代入,主人公のX座標
◆変数の操作:[0008:現在のXY]乗算,1000
◆変数の操作:[0008:現在のXY]加算,主人公のY座標
◆条件分岐:変数[0009:前のXY]がV[0008]以外<主人公が移動した時
 ◆変数の操作:[0009:前のXY]代入,変数[0008]の値
 ◆変数の操作:[0006:移動床ID]代入,0
 ◆
:分岐終了
◆注釈:------------------------------
:  :▼移動床のイベントID
:  : 

◆スイッチの操作:[0001:移動床に合わせて移動]をONにする
◆変数の操作:[0007:1ページ]代入,1
◆指定位置のイベントID取得:(V[0001],V[0002]),[0003:ID]
◆条件分岐:変数[0003:ID]が1以上(オプション:ON)<何らかのイベントIDがある時
 ◆条件分岐:変数[0003:ID]が3以下(オプション:ON)<移動床のイベントIDの時
  ◆変数の操作:[0006:移動床ID]代入,変数[0003]の値<移動床のイベントIDを設定
  ◆
 :それ以外の場合<イベントIDが3より大きい時(移動しないイベント床がある時)
  ◆変数の操作:[0006:移動床ID]代入,0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:それ以外の場合<イベントIDが0の時
 ◆条件分岐:変数[0006:移動床ID]が1以上<60分の1秒前は移動床だった時
  ◆イベントの呼び出し:V[6][V[7]]<移動床の1ページ目を呼び出す
  ◆
 :分岐終了
 ◆変数の操作:[0006:移動床ID]代入,0
 ◆
:分岐終了
◆スイッチの操作:[0001:移動床に合わせて移動]をOFFにする

◆注釈:------------------------------
:  :▼移動床乗っているかチェック
:  : 

◆変数の操作:[0021〜0030]代入,主人公の画面X
◆変数の操作:[0031〜0040]代入,主人公の画面Y
◆変数の操作:[0021:画面位置X01]減算,EV0001の画面X
◆変数の操作:[0022:画面位置X02]減算,EV0002の画面X
◆変数の操作:[0023:画面位置X03]減算,EV0003の画面X
◆変数の操作:[0031:画面位置Y01]減算,EV0001の画面Y
◆変数の操作:[0032:画面位置Y02]減算,EV0002の画面Y
◆変数の操作:[0033:画面位置Y03]減算,EV0003の画面Y
◆変数の操作:[0021〜0040]除算,16
◆条件分岐:変数[0021:画面位置X01]が0
 ◆条件分岐:変数[0031:画面位置Y01]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0022:画面位置X02]が0
 ◆条件分岐:変数[0032:画面位置Y02]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0023:画面位置X03]が0
 ◆条件分岐:変数[0033:画面位置Y03]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆注釈:------------------------------
:  :▼移動中チェック
:  : 

◆変数の操作:[0004:画面移動中チェックX]代入,主人公の画面X
◆変数の操作:[0005:画面移動中チェックY]代入,主人公の画面Y
◆変数の操作:[0004:画面移動中チェックX]減算,このイベントの画面X
◆変数の操作:[0005:画面移動中チェックY]減算,このイベントの画面Y
◆変数の操作:[0004〜0005]剰余,16
◆条件分岐:変数[0004:画面移動中チェックX]が0以外
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0005:画面移動中チェックY]が0以外
 ◆イベント処理の中断
 ◆
:分岐終了
◆注釈:------------------------------
:  :▼穴の上+移動床乗ってない
:  : 

◆指定動作の全解除
◆効果音の演奏:落ちる2
◆場所移動:〜落下地点〜



移動床のマップイベントのイベント実行内容に、
以下のイベントを設定してください。
◆条件分岐:スイッチ[0001:移動床に合わせて移動]がON
 ◆条件分岐:このイベントが上を向いている
  ◆キャラクターの動作指定:主人公,向き固定,移動速度ダウン,上に移動,
                   移動速度アップ,向き固定解除
  ◆
 :分岐終了
 ◆条件分岐:このイベントが下を向いている
  ◆キャラクターの動作指定:主人公,向き固定,移動速度ダウン,下に移動,
                   移動速度アップ,向き固定解除
  ◆
 :分岐終了
 ◆条件分岐:このイベントが左を向いている
  ◆キャラクターの動作指定:主人公,向き固定,移動速度ダウン,左に移動,
                   移動速度アップ,向き固定解除
  ◆
 :分岐終了
 ◆条件分岐:このイベントが右を向いている
  ◆キャラクターの動作指定:主人公,向き固定,移動速度ダウン,右に移動,
                   移動速度アップ,向き固定解除
  ◆
 :分岐終了
 ◆
:分岐終了



以上で設定完了です。



☆壁沿いの移動を制限する
壁の下層チップを設定している場合、


以下のように壁沿い沿って、移動する事ができます。


この壁沿いの移動を防ぐには、
移動できないマップイベントを設定すると良いでしょう。


マップイベントの設定は、以下のように設定します。
プライオリティタイプ:通常キャラと重ならない
別のイベントと重ならない:チェックする




◎関連ページ
●穴に落ちて下の階へ移動する


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