すべる床のツクり方

|д・) ソォーッ…



 いよいよ梅雨入り、といった風情の6月となりました。
 こんばんは、SOLAです。
 今日はツクールで「すべる床」の作り方を書いていきますよ。

「すべる床」のシステムはいわずもがな。
 氷のダンジョンなどにおけるスタンダードな仕掛けです。
 一歩進んだら最後、壁や障害物にぶつかるか陸地に上がるまで止まらない、止まれない!

ice_001.png


 ということで、ツクり方は追記の方で書いていきます。
(動作確認用のサンプルプロジェクトもあるよ♪)




■0.スイッチと変数


 以降、サンプルプロジェクトに沿って進行します。
 まず、使用するスイッチと変数の説明から。

 準備するスイッチは、1つだけ。床を滑るためのトリガーとなります。
 今回は【121番】を使用します。
ice_002.png


 変数は全部で6つ使います。
 プレイヤーの一歩手前の座標(x,y)を取得するのに2つ:【7番】【8番】
 プレイヤーの現在いる座標(x,y)を取得するのに2つ:【11番】【12番】
 プレイヤーの現在いるマップIDを取得するのに1つ:【31番】
 下層のタイルIDを取得するのに1つ:【46番】
ice_003.png

 番号はあくまでもSOLAの振り方なので、連続した番号でも構いませんよ。
(イベントコマンドで使うものを羅列してあるので、バラバラになってしまったのです)
 自分のわかりやすい番号が一番いいと思います。

■1.すべる床のタイルIDを調べる


 では次に、すべる床(氷の床)で使うタイルIDを調べましょう。
 RPGツクールVXAceには指定位置の情報取得という非常に便利(そう)なコマンドがあります。
 以下のようなイベントを実行してプレイヤーの真下のタイルIDを取得します。
ice_008.png

ice_004.png

 下層のタイルIDを知りたいので、タイルID(Layer1)にしています。
 ちなみに中層タイルがLayer2、上層タイルがLayer3です。
 マップタイルの仕組みの詳細については公式ページをご覧下さい。

 さて、実行内容をよくよく見るとスクリプト:p $game_variables[46]という記述がありますね。
 これはテストプレイ時、コンソールの表示をONにしている場合に出力されるものです。
 変数【46番】、つまり出力された数値がタイルIDということです。

 ↓こんな感じで(以下は並列処理で実行した図)。
ice_005.png

 結果、すべる床のタイルIDは1539ということがわかりました。

■2.イベント作成


 では、改めてマップにイベントを配置します。
 配置するイベントは、2つ。
 プレイヤーの座標監視(並列処理)すべる床での移動命令(自動実行)です。

 ↓プレイヤーの座標監視(並列処理)
ice_006.png

 先ほど使用したイベントの流用です。
 スクリプト部分は、不要だと感じたら削除してしまっても構いません。

 ↓すべる床での移動命令(自動実行)
ice_007.png

 トリガーはスイッチ【121番】です。

>移動前処理
 移動時にメニューが開けると不自然なので、メニュー禁止に。
 今回は隊列歩行ONの設定で作成したので、メンバーを集合させ隊列歩行をOFFにします。(そもそも隊列歩行OFFの場合は削除してしまっても構いません)
 歩行アニメのOFFと移動速度の変更は、滑っている感じを出すための設定です。

>タイルID(変数【46番】)が1539以外の場合ループ中断
 ここからループ開始なのですが、早々にループ中断命令ですw
 この時必要なのは禁止していたメニューを許可し、ループを中断することです。
 以下に表記する命令は隊列歩行ONが基本の方向け。
 変数【31番】に現在いるマップIDを代入。
 マップ名表示をOFFにする(マップ名表示を使用している場合)。
 場所移動(マップID:【31番】、X:【11番】、Y:【12番】)実行。
 隊列歩行をON。
 なんでこんな(面倒な)ことをしているのかというと、普通に隊列歩行をONにするとフォロワーが移動途中の状態で表示されるからです。
 こうすることでキレイにパッと隊列が再表示される仕組みなのです。

>移動処理
 移動する前に変数【7番】【8番】に移動直前のプレイヤー座標を格納します。
 これは次の処理に繋がります。

>停止時ループ中断
 移動後、移動直前と現在のプレイヤー座標と比較して同一の場合……つまり停止している状態の場合はループを中断します。
 壁などにぶつかってなお、すべる床の上にいる時ってありますよね?
 そういった時に発動するループ中断です。
 この時はまだ滑っている途中なので、メニュー禁止は継続です。

>移動後処理
 すべる床ループから抜け出した際に発動する命令です。
 歩行アニメをON、移動速度を標準に戻します。
 最後に、スイッチ【121番】をOFFにします。



 以上で「すべる床」のイベントが完成です。
 もっとうまいやり方があるかもしれない、というかあるだろう!
 最初はツルツルというよりカクカク滑っていたことから考えると、ここまで辿り着いた喜びもありますがw

 毎度ながら説明下手なもんで、今回もサンプルプロジェクトをご用意させて頂きました。
 前作のライツアウトも同梱していますので是非ご覧になってみて下さい。
[RPGツクールVXA]DS_Ev_Sample_v1_0_1.exe

 ちなみに、今回はタイルIDを利用しましたが、地形タグやリージョンIDなどでの応用も可能です。
 自分で設定できる分、調べる手間も省けるでしょう。
 皆様のツクツクの参考になりましたら幸いです。



|彡サッ!

この記事へのコメント


この記事へのトラックバック