【え!知らないの?】RPGツクールMVのコモンイベントの作り方


RPGツクールMVを使い始めた。
コモンイベントって何のためにあるんだろう?
何を書けばいいんだろう?
コモンイベントの使い方を教えてほしい!
こんな悩みを解決します。
本記事の内容
- ゲームの拡張性を高めるRPGツクールMVのコモンイベントの作り方
本記事の信頼性

この記事を書いた私は、ゲーム制作歴10年。
自作ゲームは27万プレイ突破・ゲームコンテスト6回以上受賞。
ゲーム制作の講師経験もあり、個人開発ゲームも販売しています。
本記事のコモンイベントを書くことで、ゲームの拡張性をアップできます。
ちなみに私はRPGツクール使用歴10年以上です。
RPGツクールに関してはある程度知識があります。
これからゲームを作る方は、ぜひこの記事のコモンイベントを記述してみてくださいね。
RPGツクールMVのコモンイベントの作り方

そもそもコモンイベントって何?という方に簡単に説明します。
- コモンイベント
どのマップにいても処理できるイベント。 - マップイベント
そのマップでしか処理できないイベント。
RPGツクールMVの歯車マークをクリックして[データベース]-[コモンイベント]で記述できるイベントです。
さて、下記が本記事で紹介するコモンイベントです。
- コモンイベント:時間計測(並列処理)
- コモンイベント :プレイヤー位置情報取得(並列処理)
- コモンイベント:プレイヤー足音(なし)
- コモンイベント:操作制御(並列処理)
- コモンイベント:決定(なし)
- コモンイベント:キャンセル(なし)
- コモンイベント:メニュー(なし)
- コモンイベント:イベント進行中(なし)
- コモンイベント:イベント進行解除(なし)
※()内はトリガー条件です。
こちらのコモンイベントで下記のことが可能になります。
- プレイ時間計測
- 時間イベント等の実装
- プレイヤー座標の取得
- プレイヤー向きの取得
- プレイヤー座標にある地形の取得
- プレイヤー座標にあるイベントの取得
- プレイヤー前方にあるイベントの取得
- プレイヤーが移動したか判別
- プレイヤーの移動時に足音を再生
- 通常時とイベント進行中で分けて操作を制御
- 自作メニュー画面の実装
- イベント進行中を簡単に切り替え
コモンイベントを使うことで、明らかにゲームの拡張性がアップしますよね。
一気に書いてもよくわからないと思いますので、順番に説明していきます。
コモンイベント:時間計測(並列処理)
- プレイ時間計測
- 時間イベント等の実装
◆注釈:/*-----------------------
: :時間計測
: :-----------------------*/
◆ウェイト:60フレーム
◆変数の操作:#0002 秒 += 1
◆条件分岐:秒 ≥ 60
◆変数の操作:#0003 分 += 1
◆変数の操作:#0002 秒 = 0
◆
:分岐終了
◆条件分岐:分 ≥ 60
◆変数の操作:#0004 時間 += 1
◆変数の操作:#0003 分 = 0
◆
:分岐終了
◆注釈:/*-----------------------
: :その他値の増減(任意)
: :-----------------------*/
記述説明(時間計測)
1秒経ったら秒を1増やす。※1秒は60フレーム
秒が60回カウントされたら分を1増やす。
分が60回カウントされたら時間を1増やす。
用途
このコモンイベントは、プレイタイム計算に使えます。
また、さらに応用として「その他値の増減」の下に記述を追加をすることで、「時間が経つとアイテムが1つ増えるイベント」等も実装できます。
コモンイベント :プレイヤー位置情報取得(並列処理)
- プレイヤー座標の取得
- プレイヤー向きの取得
- プレイヤー座標にある地形の取得
- プレイヤー座標にあるイベントの取得
- プレイヤー前方にあるイベントの取得
- プレイヤーが移動したか判別
◆注釈:/*-----------------------
: :プレイヤーの現在の情報取得
: :-----------------------*/
◆変数の操作:#0012 プレイヤーX = プレイヤーのマップX
◆変数の操作:#0013 プレイヤーY = プレイヤーのマップY
◆変数の操作:#0014 プレイヤー向き = プレイヤーの向き
◆変数の操作:#0015 マップID = マップID
◆指定位置の情報取得:プレイヤー地形タグ, 地形タグ, ({プレイヤーX},{プレイヤーY})
◆指定位置の情報取得:プレイヤーイベントID, イベントID, ({プレイヤーX},{プレイヤーY})
◆注釈:/*-----------------------
: :プレイヤー前方マスの情報取得
: :-----------------------*/
◆変数の操作:#0018 プレイヤーX±1 = プレイヤーX
◆変数の操作:#0019 プレイヤーY±1 = プレイヤーY
◆条件分岐:プレイヤー向き = 2
◆変数の操作:#0019 プレイヤーY±1 += 1
◆
:分岐終了
◆条件分岐:プレイヤー向き = 4
◆変数の操作:#0018 プレイヤーX±1 += -1
◆
:分岐終了
◆条件分岐:プレイヤー向き = 6
◆変数の操作:#0018 プレイヤーX±1 += 1
◆
:分岐終了
◆条件分岐:プレイヤー向き = 8
◆変数の操作:#0019 プレイヤーY±1 += -1
◆
:分岐終了
◆指定位置の情報取得:プレイヤー前方イベントID, イベントID, ({プレイヤーX±1},{プレイヤーY±1})
◆注釈:/*-----------------------
: :プレイヤー移動したか判別
: :-----------------------*/
◆変数の操作:#0021 プレイヤーX*1000+Y = プレイヤーX
◆変数の操作:#0021 プレイヤーX*1000+Y *= 1000
◆変数の操作:#0021 プレイヤーX*1000+Y += プレイヤーY
◆条件分岐:プレイヤーX*1000+Y ≠ プレイヤーX*1000+Y前回
◆コモンイベント:2-プレイヤー足音
◆変数の操作:#0022 プレイヤーX*1000+Y前回 = プレイヤーX*1000+Y
◆
:分岐終了
◆注釈://ループによる処理落ちを抑制
◆ウェイト:2フレーム
記述説明(プレイヤーの現在の情報取得)
プレイヤーの座標・向き・地形タグ・イベントIDを取得。
記述説明(プレイヤー前方マスの情報取得)
プレイヤーの一歩前方のマスの情報を取得。
まずプレイヤーの座標のコピーを作成。
プレイヤーの向きによって、コピーの値を増減する。
8.上(0,-1) | ||
4.左(-1,0) | プレイヤー(0,0) | 6.右(1,0) |
2.下(0,1) |
すると、コピーはプレイヤーの前方座標を記録した変数になる。
その変数でイベントIDを取得すれば、プレイヤーの前方のイベントIDが取得されたことになる。
記述説明(プレイヤー移動したか判別)
座標の変化を簡単に比較するために、1つの変数にプレイヤーの座標情報を入れる。(X座標×1000+Y座標)
座標情報(現在)と座標情報(前回)で比較し、値が異なれば足音(コモンイベント)を読み込む。
再生が終了したら、座標情報(前回)に座標情報(現在)を上書き。
用途
プレイヤーの位置にイベントがあるか判別し、イベントの読み込みなどに利用できます。
また、プレイヤー前方のイベントの有無を確認することにより、プレイヤーの上に「?マーク」をつけたりできます。
つまり、ゲームプレイ中にそこが調べられる場所かどうかを分かりやすくすることができます。
そして、プレイヤーが移動したか確認することにより、足音の再生コモンイベントを読み込むことができます。
コモンイベント:プレイヤー足音(なし)
- プレイヤーの移動時に足音を再生
◆注釈:/*-----------------------
: :連続再生防止
: :-----------------------*/
◆条件分岐:足音再生許可がON
◆スイッチの操作:#0007 足音再生許可 = OFF
◆
:それ以外のとき
◆スイッチの操作:#0007 足音再生許可 = ON
◆
:分岐終了
◆注釈:/*-----------------------
: :プレイヤー地形タグによって足音を変更
: :-----------------------*/
◆条件分岐:足音再生許可がON
◆条件分岐:プレイヤー地形タグ = 0
◆SEの演奏:Move1 (20, 150, 0)
◆
:分岐終了
◆条件分岐:プレイヤー地形タグ = 1
◆SEの演奏:Move2 (20, 150, 0)
◆
:分岐終了
◆
:分岐終了
記述説明(連続再生防止)
これを入れないとなんだかうるさくなる。
スイッチのON/OFFを切り替える。
記述説明(プレイヤー地形タグによって足音を変更)
スイッチがONのときのみ再生。
地形タグの値によって再生する効果音を分ける。
用途
マスに登録した地形によって、足音を変えることができます。
例えば、沼地を歩くときはビチャビチャといった音を使います。
廊下を歩くときはコツンコツンといった音を使います。
コモンイベント:操作制御(並列処理)
- 通常時とイベント進行中で分けて操作を制御
◆注釈:/*-----------------------
: :操作を一括管理
: :-----------------------*/
◆条件分岐:ボタン[決定]が押されている
◆コモンイベント:4-決定
◆
:分岐終了
◆条件分岐:ボタン[キャンセル]が押されている
◆コモンイベント:4-キャンセル
◆
:分岐終了
◆注釈://ループによる処理落ちを抑制
◆ウェイト:5フレーム
記述説明(操作を一括管理)
押されたキーによって読み込むイベントを管理。
今回は「決定キー」「キャンセルキー」を押した場合を管理。
それぞれ各コモンイベントを読み込ませた。
コモンイベント:決定(なし)
◆注釈://通常
◆条件分岐:操作シーン = 0
◆
:分岐終了
◆注釈://イベント進行中
◆条件分岐:操作シーン = 1
◆
:分岐終了
記述説明
「操作シーン」という変数の値によって場合分けする。
- 0の場合
通常プレイ時。イベント等が何も進行していない状態。 - 1の場合
イベント進行時。
用途
決定キーを押したときの処理を、通常時かイベント進行時かで分けることができます。
なお、今回は場合分けのみで、具体的な処理は記述していません。
コモンイベント:キャンセル(なし)
- 自作メニュー画面を実装
◆注釈://通常
◆条件分岐:操作シーン = 0
◆コモンイベント:6-メニュー
◆
:分岐終了
◆注釈://イベント進行中
◆条件分岐:操作シーン = 1
◆
:分岐終了
記述説明
「操作シーン」という変数の値によって場合分けする。
- 0の場合
通常プレイ時。イベント等が何も進行していない状態。 - 1の場合
イベント進行時。
「操作シーン」が0のときメニュー(コモンイベント)を読み込む。
用途
キャンセルキーを押したときの処理を、通常時かイベント進行時かで分けることができます。
今回は通常時に「メニュー(コモンイベント)」を読み込むように設定しました。
コモンイベント:メニュー(なし)
- 自作メニュー画面を実装
◆選択肢の表示:セーブ, ロード, 設定, タイトル, 閉じる (ウィンドウ, 中, #1, #5)
:セーブのとき
◆セーブ画面を開く
◆
:ロードのとき
◆スクリプト:SceneManager.push(Scene_Load);
◆
:設定のとき
◆スクリプト:SceneManager.push(Scene_Options);
◆
:タイトルのとき
◆タイトル画面に戻す
◆
:閉じるのとき
◆
:分岐終了
記述説明
選択肢の表示をメニュー画面として代用。
用途
自作メニュー画面の記述等に使用できます。
なお、今回は「選択肢の表示」で自作メニュー画面を実装しました。
コモンイベント:イベント進行中(なし)
- イベント進行中を簡単に切り替え
◆スイッチの操作:#0012 イベント中 = ON
◆変数の操作:#0032 操作シーン = 1
用途
イベント進行中に ON/OFFしたいスイッチや、値を変更したい変数を記述できます。
イベントに入ったら、こちらのコモンイベントを呼び出すことで、何度も同じ記述を書く手間がなくなります。
コモンイベント:イベント進行解除(なし)
- イベント進行中を簡単に切り替え
◆スイッチの操作:#0012 イベント中 = OFF
◆変数の操作:#0032 操作シーン = 0
用途
イベントが終わった時にON/OFFしたいスイッチや、値を変更したい変数を記述できます。
イベントが終わったら、こちらのコモンイベントを呼び出すことで、何度も同じ記述を書く手間がなくなります。
まとめ:RPGツクールMVのコモンイベントを早速作ってみよう!

慣れない内はイベント記述は難しいかもしれません。
ですが、ゲームの拡張性を高められるので、書いて損はなしです。
合わせて読みたい
RPGツクールMVで脱出ゲームや探索ゲームを作りたい方へ。
定番の「椅子を動かすイベント」の作り方を下記記事で解説しました。