RPGツクールMVで敵が追いかけてくるイベントの作り方

RPGツクールMVで敵が追いかけてくるイベントの作り方

RPGツクールMVで青鬼のように敵が追いかけてくるゲーム(いわゆる逃げゲー、追いゲー)を作る際に肝となる、追いかけてくる敵イベントの作り方です。敵が別のマップまで追ってくる方法、敵を消す(撤退させる)方法まで含め解説します。

目次

敵が追いかけてくる方法

rpgmaker_enemy_chase1

プレイヤーを追いかけてくるイベントの作り方は簡単です。

まずは新規イベントを作り、敵モンスターなどの画像を選択。『自律移動』の項目「タイプ」で「近づく」を選択。これでこのイベントが選択した画像の姿でプレイヤーを追いかけてくるようになります。

追跡速度は「速度」と「頻度」で調整しましょう。

ただしこの方法はRPGツクールにもともと用意されている追跡システムを使用しているだけですので精度は高くありません。障害物を避けるなど、より精密に追跡させたい場合は条件分岐や変数の操作、タイルのリージョンを使うなどして追跡システムを組む必要があります。

※経路探索プラグイン『SmartPath.js』を使用することによって精度の高い追跡システムの実装が可能です。詳しくは下記の記事をご参照下さい。

高度な経路探索プラグインSmartPath.js

敵に捕まった時の処理

rpgmaker_enemy_chase2

次に敵に捕まった時のイベント内容を作成しましょう。

先ほどのイベントの『トリガー』を「イベントから接触」に変更。『実行内容』に敵に捕まった際に発生するイベントの内容を入力します。

上記の例では敵に捕まると主人公が断末魔をあげてゲームオーバーとなります。

敵が別のマップまで追いかけてくる方法

rpgmaker_enemy_chase3

次に、プレイヤーが別のマップに移動しても敵が追いかけてくるイベントの作り方です。

前提として、RPGツクールでは通常のイベントはマップを越えることはできません。(「通常の」と言っているのはマップを移動しても実行し続けることのできる「コモンイベント」というものがあるためです。)

つまり敵がマップを移動しても追いかけてくるというイベントを作る場合、「移動前のマップ」と「移動後のマップ」にそれぞれ別のイベントを用意し、プレイヤーがマップを移動すると「移動後のマップ」にあるイベントが起動するようにする必要があります。

「スイッチ1がonの場合」に追いかけてくる敵を各マップに作るというのが最も単純ですが、イベントは設置した地点から動き始めるため、この方法は出入り口が複数あるマップでは使用できません。プレイヤーはマップの左側から来たのに敵は右(イベントの設置位置)から追ってきた、などということになってしまいます。

そこで、「追いかけてくる敵イベント」とは別に「敵イベントを適切な位置に移動させ、適切なタイミングで出現させるイベント」を用意します。

rpgmaker_enemy_chase4

と、その前にマップ移動イベントを少しいじります。

敵に追われている時(スイッチ1がonの時)にマップ移動すると、いったんスイッチ1(敵に追われている)をoffにしてスイッチ2(敵出現位置算出)をonにするよう設定します。

追いかけてくる敵イベントは『出現条件』を「スイッチ1がonの場合」にしているため、プレイヤーがマップを移動した際いったん消失します。

rpgmaker_enemy_chase5

「敵イベントを適切な位置に移動させ、適切なタイミングで出現させるイベント」を作成します。このイベントはシステム的な処理を行うだけですので、画像はなしにしておきます。

『出現条件』は「スイッチ2がonの時」、『トリガー』は「並列処理」としておきます。先ほどのマップ移動イベントでスイッチ1をoff、スイッチ2をonにしているため、プレイヤーが敵に追われた状態でこのイベントのあるマップに移動してくるとこのイベントはすぐに実行されます。

『実行内容』で「変数の操作」、変数1と変数2にそれぞれプレイヤーのX座標、Y座標を代入し、「イベントの位置設定」で追ってくる敵モンスターのイベントを「プレイヤーのX座標、Y座標」へ移動させます。その後スイッチ2をoffにし、セルフスイッチAをonにします。

これで敵モンスターはプレイヤーがこのマップに入ってきた瞬間の位置へ移動しますが、スイッチ1はまだonになっていないので敵は出現していません。

rpgmaker_enemy_chase6

プレイヤーのX座標、Y座標を変数1、2に代入するにはイベントコマンド「変数の操作」→「変数を選択」→「操作」を「代入」→「オペランド」を「ゲームデータ」の「キャラクター」、「プレイヤー」の「マップX(Y座標はマップY)」とします。

rpgmaker_enemy_chase7

続いてこのイベントの2ページ目に『出現条件』を「セルフスイッチAがon」『トリガー』を並列処理のイベントを作成し、先ほどの処理の続きを行います。

『実行内容』に「ウェイト60フレーム」とすることで1秒間待機し、その後スイッチ1をonにすることで敵モンスターのイベントを「出現」させます。

これで敵に追われた状態でプレイヤーがこのマップに移動してくると、『プレイヤーがこのマップに入ってきた位置(座標)に敵モンスターが1秒後に出現する』というイベントが出来上がりました。

最後に「セルフスイッチAをoff」にしておくことで、このイベントは出現条件を満たさなくなり消失します。このままプレイヤーが別のマップに移動し、もう一度このマップに移動してきたとしても上記の敵が追跡してくる一連の流れが実行されます。

敵を消す(撤退させる)方法

最後に追いかけてくる敵を消す方法です。

これについては敵が撤退する条件をどう定義するかによって組むべきイベント内容が異なります。具体的な事例を2つ挙げておきますので参考にどうぞ。

1.規定の回数マップ移動で敵を消す

rpgmaker_enemy_chase8

プレイヤーが特定回数マップを移動した場合敵を撤退させる方法です。

まずはプレイヤーのマップ移動数をカウントする変数を作成します。この例では変数3(マップ移動数)とします。

次に敵を出現させるイベント(上記の例だとスイッチ1をonにするイベント)で変数3(マップ移動数)に0を代入します。

rpgmaker_enemy_chase9

敵が出現している時(スイッチ1がonの時)のマップ移動イベントの実行内容に変数3(マップ移動数)に1加算する処理を追加します。

rpgmaker_enemy_chase10

マップ移動イベントにイベントページを追加し、変数3(マップ移動数)が10以上の時にスイッチ1をoffにするよう記述します。

敵が追いかけてくる時の実行内容はスイッチ2(敵出現位置算出)をonにしていましたが、スイッチ2を入れずにスイッチ1をoffにするだけなので、「敵イベントを適切な位置に移動させ、適切なタイミングで出現させるイベント」は実行されず、敵は追いかけてこなくなります。

2.規定の歩数移動で敵を消す

rpgmaker_enemy_chase11

プレイヤーが特定歩数移動した場合に敵を撤退させる方法です。

RPGツクールMVではゲームデータとしてプレイヤーの歩数を常にカウントしています。

そこでまず、敵を出現させるイベント(スイッチ1をonにするイベント)の実行時、この歩数のデータに0を代入します。イベントコマンド『スクリプト』で「$gameParty._steps = 0」と入力すればOKです。

次に、歩数が一定以上になった場合に敵を消すイベントを作動させるスイッチとしてスイッチ3(歩数カウントスタート)をonにします。

rpgmaker_enemy_chase12

歩数が一定以上になった場合に敵を消すイベントを作成します。これはプレイヤーがどのマップにいても作動してほしいイベントなので、「コモンイベント」というものを使います。

RPGツクール上部のメニューバーから『ツール』→『データベース』→『コモンイベント』を選択、『トリガー』を並列処理、『スイッチ』をスイッチ3(歩数カウントスタート)とします。

変数4(プレイヤーの歩数)を作り、「変数の操作」でゲームデータから「歩数」を代入します。

その後条件分岐で変数4(プレイヤーの歩数)が一定歩数(上記例では100歩)以上となった場合スイッチ1をoffにし、敵を消しています。

ただし、この方法だと規定歩数に達すると同時にプレイヤーがマップ移動を行った場合、上記の「敵イベントを適切な位置に移動させ、適切なタイミングで出現させるイベント」が実行されてしまい、60フレーム後にスイッチ1がonになってしまいます。

そこで若干微妙な方法ではありますが、70フレーム後にもう一度スイッチ1をoffにすることで上記の場合でも敵が消えてくれるようにしています。あとはこのイベントの実行条件となっているスイッチ3(歩数カウントスタート)をoffにしておけばOKです。

このエントリーをはてなブックマークに追加

RPGツクールMVで敵が追いかけてくるイベントの作り方」への8件のフィードバック

  1. 匿名

    いつもお世話になっております。お聞きしたい事があります
    追いかけてくる敵に関してですが、プレイヤーの右や左や真正面に触れると
    ゲームオーバーになるのですが後ろから触れてもゲームオーバーにならず
    敵が1マス開けながらプレイヤーの後を追うようになってしまいます。
    でも 前までは後ろから触れてもゲームオーバーになる事は出来たんです。
    ちなみに 敵の設定は
    タイプ 近づく
    プライオリティ通常キャラと同じ
    トリガーイベントから接触
    実行内容 ゲームオーバー です

    何か間違っている部分でもあるのでしょうか。
    長文失礼致しました。

    返信
    1. 管理人 投稿作成者

      実はここ最近RPGツクールをいじっていないのですが、『敵が1マス開けながらプレイヤーの後を追うようになってしまう』ということは、『後ろから触れてもゲームオーバーにならない』のではなく『後ろから触れることができない』状態なのではないでしょうか。
      プレイヤーの後ろに不可視の(画像が選択されていない)接触可能なイベントがくっついている(プレイヤーと追いかけてくるイベントの間に別のイベントが挟まっている)可能性などがないか確認してみて下さい。

      返信
      1. 匿名

        コメント返信ありがとうございます。
        お恥ずかしながらアクターに文字入力パスワード用の
        透明なアクターが存在しておりました。
        設定で隊列歩行をオフにしたらちゃんと後ろからでも
        ゲームオーバーになる事が出来ました!ありがとうございます。そしていつも詳しい記事を書いて下さりありがとうございます

        返信
    2. もむも

      主さんではなく恐縮ですが、敵キャラの移動速度を上げてみては如何でしょう?

      返信
  2. reito011o

    イベントの設定とかはわかりやすくていいんですが
    どこにどのイベントを配置とか教えてくださるとありがたいです。
    すいません偉そうで……

    返信
    1. 管理人 投稿作成者

      reito011o様

      敵モンスターの出現イベントは初回のみ敵モンスターが出現する場所に、再出現イベントは別のイベントで座標取得して出現させるのでどこでも良いです。
      座標取得したりモンスター出現させたりするイベントは内部的な処理を行っているだけなのでどこでも良いです。
      最初はけっこうややこしいですが、システム的にそれぞれのイベントがどういう処理を行っているのか理解してみてください。
      (こちらこそ偉そうですみません;ただこの辺理解しながら進めていかないと、逃げゲー作るのは難しいと思います)

      返信

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。