この記事は、記事内容の趣旨・引用についてYADO様に許可を頂いて書いたものです。
先日書いた「棘が出入りするダメージ床の作り方」と、YADOTに同趣旨の記事があります。
トゲ床のトラップ
yado.tk/2k/12_en/037_yuka_trap/
RPGツクール2000にはスクリプトがないため、全てのイベントをイベントコマンドで作成する必要があります。
これはRPGツクールMVを使いこなす為にも意義があると考え、同様に設定できるか挑戦しました。
目次
2000にはあるが、MVにはない機能
今回、影響が大きいのは「イベントの呼び出し」です。
これを代用するために、下記のプラグインを入れプラグインコマンドを使用しました。
テンプレートイベント(トリアコンタン様作)
raw.githubusercontent.com/triacontane/RPGMakerMV/master/TemplateEvent.js
プラグインコマンド
TE_CALL_MAP_EVENT \v[5] 1
使用例(変数「5」の値のイベントの1ページ目を呼び出す)
「キャラクターのフラッシュ」もMVには無いため「アニメーションの表示」で代用しました。
2000にはないが、MVにはある機能
今回使用するものにはリージョンがあります。
サンプルプロジェクト
下記作業を終えている最小限のデータを配布します。
新規プロジェクトを作成し、上書きすることで確認ができます。
作業開始
スイッチ・変数の一覧
- スイッチ
- 番号:名前 使用内容
- 0001 : トラップ確認 足元のイベントがトゲであるかどうかを確認する時に使用。
- 0002 : トラップ実行 足元のイベントがトゲである時にON。
- 変数
- 番号 : 名前 : 使用内容
- 0001 : トラップ時間 : トゲの上下移動の時間を60分の1秒単位で設定。
- 0002 : 無敵時間 : 無敵時間を60分の1秒単位で設定。マイナス値の場合は無敵。
- 0003 : X座標 : プレイヤーのX座標を設定。
- 0004 : Y座標 : プレイヤー のY座標を設定。
- 0005 : イベントID:イベントIDを取得。
- 0006 : 1ページ目:イベントを呼び出す時に使用。
- 0007 : リージョンID:MVでリージョンを取得。(0005の代替)
※先にスイッチや変数の名前を設定しておくと、この後のイベント設定が楽になると思います。
マップイベント「床チェック」
◆変数の操作:#0001..0002 += 1 ◆条件分岐:トラップ時間 ≥ 120 ◆変数の操作:#0001 トラップ時間 = 0 ◆ :分岐終了 ◆条件分岐:トラップ時間 < 60 ◆イベント処理の中断 ◆ :分岐終了 ◆変数の操作:#0003 X座標 = プレイヤーのマップX ◆変数の操作:#0004 Y座標 = プレイヤーのマップY ◆指定位置の情報取得:イベントID, イベントID, ({X座標},{Y座標}) ◆条件分岐:イベントID = 0 ◆イベント処理の中断 ◆ :分岐終了 ◆条件分岐:無敵時間 < 0 ◆イベント処理の中断 ◆ :分岐終了 ◆変数の操作:#0006 1ページ目 = 0 ◆スイッチの操作:#0002 トラップ実行 = OFF ◆スイッチの操作:#0001 トラップ確認 = ON ◆注釈:イベントの呼び出し ◆プラグインコマンド:TE_CALL_MAP_EVENT \v[5] 1 ◆スイッチの操作:#0001 トラップ確認 = OFF ◆条件分岐:トラップ実行がON ◆変数の操作:#0002 無敵時間 = -30 ◆SEの演奏:Attack3 (90, 100, 0) ◆HPの増減:パーティ全体, - 1 ◆アニメーションの表示:プレイヤー, 打撃/物理 ◆ :分岐終了
マップイベント「トゲの床」
上記は動作を忠実に再現するためにプラグインを導入しました。
しかし、この手法はこのプラグインの本来の使用方法と異なるので、応用が効きません。
ここから、プラグインなしで、同様の動作をする変更をします。
プラグインなしに変更を試みる
今回は呼び出しているイベントの内容が同じで、シンプルなものだったので、呼び出さずに直接実行してみましたが、棘が出ないイベントの上でもダメージを受ける動作になってしまいます。
取得情報をイベントIDからリージョンに変更します。
そして、トラップ実行がONの動作に条件分岐を追加します。
マップイベント「床チェック」
◆変数の操作:#0001..0002 += 1 ◆条件分岐:トラップ時間 ≥ 120 ◆変数の操作:#0001 トラップ時間 = 0 ◆ :分岐終了 ◆条件分岐:トラップ時間 < 60 ◆イベント処理の中断 ◆ :分岐終了 ◆変数の操作:#0003 X座標 = プレイヤーのマップX ◆変数の操作:#0004 Y座標 = プレイヤーのマップY ◆指定位置の情報取得:リージョンID, リージョンID, ({X座標},{Y座標}) ◆条件分岐:リージョンID ≠ 1 ◆イベント処理の中断 ◆ :分岐終了 ◆条件分岐:無敵時間 < 0 ◆イベント処理の中断 ◆ :分岐終了 ◆変数の操作:#0006 1ページ目 = 0 ◆スイッチの操作:#0002 トラップ実行 = OFF ◆スイッチの操作:#0001 トラップ確認 = ON ◆注釈:イベントの呼び出し ◆スイッチの操作:#0002 トラップ実行 = ON ◆スイッチの操作:#0001 トラップ確認 = OFF ◆条件分岐:トラップ実行がON ◆変数の操作:#0002 無敵時間 = -30 ◆SEの演奏:Attack3 (90, 100, 0) ◆HPの増減:パーティ全体, - 1 ◆アニメーションの表示:プレイヤー, 打撃/物理 ◆ :分岐終了
マップイベント「トゲの床MV」
最後に、棘が出入りするマップイベントの上にリージョン1を上書きします。
このようにRPGツクール2000のイベントコマンドを使い尽くした情報は、MVでも有益です。
安易にプラグインやスクリプトに頼らずに、イベントコマンドで作成していく方法をじっくり考えると、プログラミング的思考が身につき、いずれスクリプト等に触れる時に役に立つと思います。
今後も、YADOTさんの記事から参考になるものをご紹介していく予定です。
コメントを投稿するにはログインしてください。