RPGツクールMVやRPGツクールMZで、複数の主人公が登場したり、特定のマップでは特定のキャラクターを操作したりするようなゲームを作りたいと思ったことはありませんか?
通常、マップごとに操作キャラクターを切り替えるには、マップ遷移イベントや場所移動イベントの中に「パーティリーダーの変更」コマンドを配置する必要があります。しかし、対象となるマップが多い場合、この方法は以下のような課題があります。
- マップごと にイベントを設定・コピーする手間がかかる。
- 設定漏れやキャラクターの指定ミスなど、バグの原因になりやすい。
- どのマップでどのキャラクターがリーダーになるのか、後から確認・管理するのが大変。
これらの課題を解決するために、マップのメモ欄に簡単なタグを記述するだけで、そのマップに入った際に自動的に指定したキャラクターに操作を切り替えるプラグイン「UM_MapActorSetting.js」を作成しました。
この記事では、この自作プラグインの機能、導入方法、設定手順、そして具体的な使用例について解説します。イベントコマンドを使わずに、もっと手軽にキャラクター切り替えを実装したい方におすすめです。

この記事の内容
- プラグインの概要とメリット
- プラグインのインストール方法
- 基本的な設定手順 (パラメータとマップメモ)
- 具体的な使用例 (勇者と姫の切り替え)
- 使用上の注意点
- プラグイン コード (UM_MapActorSetting.js)
プラグインの概要とメリット
前述の通り、RPGツクールMV/MZでマップごとに操作キャラクターを切り替える標準的な方法は、イベントコマンド「パーティリーダーの変更」を使用することです。しかし、この方法はマップ数が多くなるほど設定が煩雑になり、管理も大変です。
UM_MapActorSetting.js プラグインは、この問題を解決するために開発されました。
主な機能とメリット:
- マップのメモ欄で指定: どのマップでどのキャラクターを操作させるかを、各マップの「メモ」欄に簡単なタグ(例:
<Player:hero>)で指定します。 - 自動切り替え: プレイヤーがメモタグを設定したマップに移動すると、プラグインが自動的にパーティの先頭キャラクター(操作キャラクター)を指定されたアクターに入れ替えます。
- イベント不要: マップごとに切り替え用のイベントを作成・配置する必要がなくなります。
- 設定がシンプル: プラグインパラメータで「識別子」と「アクターID」を紐付け、マップメモに識別子を書くだけなので、設定が簡単で、後からの確認や変更も容易です。
これにより、複数キャラクターを切り替えるゲームの開発がよりスムーズになります。
プラグインのインストール方法
プラグインの導入は簡単です 。
- この記事の最後にあるプラグインコードをコピーし、テキストエディタ(メモ帳など)に貼り付けて、ファイル名を
UM_MapActorSetting.jsとして保存します。 - 作成した
UM_MapActorSetting.jsファイルを、あなたのRPGツクールプロジェクトフォルダ内のjs/pluginsフォルダに配置します。 - RPGツクールエディタを開き、「ツール」メニューから「プラグイン管理」を開きます。
- プラグインリストの空いている行をダブルクリックし、「名前」のドロップダウンから
UM_MapActorSettingを選択し、「状態」を「ON」にして「OK」をクリックします。

これでプラグインが有効になりました。
基本的な設定手順 (パラメータとマップメモ)
次に、プラグインが正しく動作するように設定を行います。
プラグインパラメータの設定
まず、マップのメモ欄で使う「識別子(任意の文字列)」と、実際に切り替える「アクター(キャラクター)」を紐付けます。
- プラグイン管理画面で
UM_MapActorSettingをダブルクリック(または選択してEnter)し、右側の「パラメータ」欄を開きます。 - 「ActorSettings」(アクター設定リスト)という項目をダブルクリックします。
- リストの空いている行をダブルクリック(または下の「+」ボタン的なものを操作)して、新しい設定を追加します。
- 追加した行で、以下の2つの項目を設定します。
- Character ID (キャラクターID): マップのメモ欄で使用する任意の識別子(半角英数字推奨、例:
hero,princess,actor1など)を入力します。 - Actor (アクター): 右側のプルダウンメニューから、この識別子に対応させたいアクターをデータベースから選択します。
- Character ID (キャラクターID): マップのメモ欄で使用する任意の識別子(半角英数字推奨、例:
- 切り替えたいキャラクターの数だけ、この設定を追加します。
- 設定が終わったら「OK」をクリックして閉じます。


マップメモの設定
次に、操作キャラクターを切り替えたいマップ側で設定を行います。
- RPGツクールエディタで、操作キャラクターを自動で切り替えたいマップを開きます。
- マップ編集画面で、マップ名を右クリック(または編集モードでマップを選択)し、「マップ設定」(または「マップのプロパティ」)を開きます。
- 右下にある「メモ」欄に、以下の形式でタグを記述します。
<Player:識別子>
識別子 の部分には、プラグインパラメータで設定した「Character ID」を正確に入力します。(例: <Player:hero>)
- 設定したら「OK」をクリックして閉じます。

これで、プレイヤーがこのマップに移動してきた際に、Player:識別子 タグで指定された識別子に対応するアクターが、自動的にパーティの先頭(操作キャラクター)になります。
具体的な使用例 (勇者と姫の切り替え)
例として、「アクターID: 1」が「勇者」、「アクターID: 2」が「姫」としてデータベースに登録されているとします。
1. プラグインパラメータの設定:
プラグイン管理画面で以下のように設定します。

- 設定1:
- Character ID:
hero - Actor:
0001: 勇者(データベースのアクターID 1)
- Character ID:
- 設定2:
- Character ID:
princess - Actor:
0002: 姫(データベースのアクターID 2)
- Character ID:

2. マップメモの設定:
例えば、2つのマップに対して以下のようにメモを設定します。
- マップ1(勇者の街)のメモ欄:
<Player:hero>
- マップ2(お城)のメモ欄:
<Player:princess>
結果:
- プレイヤーが「勇者の街」マップに入ると、操作キャラクターが自動的に「勇者」になります。
- プレイヤーが「お城」マップに入ると、操作キャラクターが自動的に「姫」になります。

このように、イベントコマンドを一切使わずに、マップごとの操作キャラクター切り替えを実現できます。
使用上の注意点
- キャラクターの切り替えは、マップ遷移時(場所移動コマンド実行後など)とゲームロード時に自動的に行われます。
- マップのメモ欄に記述するタグ
<Player:識別子>の「識別子」部分は、プラグインパラメータで設定した「Character ID」と完全に一致させてください。大文字・小文字も区別されます。記述を間違えると切り替えは機能しません。 - プラグインは、指定されたアクターをパーティの先頭に入れ替える(元々いた場合は先頭にし、いなければ追加して先頭にする)シンプルな動作をします。パーティメンバー全体の入れ替えや並び順の制御は行いません。もし元々パーティにいないアクターを指定した場合、そのアクターがパーティに追加されてリーダーになります。(元のリーダーはパーティから外れます)
- データベースで新しいアクターを追加・変更した場合や、プラグインパラメータの「Character ID」を変更した場合は、必ずプラグインパラメータの設定も更新してください。
- 他のパーティメンバー変更系プラグインと競合する可能性はあります。併用する場合はご注意ください。
プラグインコード (UM_MapActorSetting.js)
このプラグインコードはご自由にお使いください。改変なども問題ありません。
//=============================================================================
// UM_MapActorSetting
//=============================================================================
/*:
* @plugindesc マップのメモタグに基づいて、自動的にプレイヤーキャラクターを切り替えます。
* @author UHIMA
*
* @param MapActorSettings
* @text アクター設定
* @type struct<ActorConfig>[]
* @desc 各アクターの設定
*
* @help
* ============================================================================
* ■ 概要
* ============================================================================
* このプラグインは、マップのメモタグに基づいて自動的にプレイヤーキャラクターを
* 切り替えることを可能にします。
*
* ============================================================================
* ■ 使用方法
* ============================================================================
* プレイヤーキャラクターを切り替えたいマップには、以下のメモタグを追加してください:
*
* <Player:characterId>
*
* プラグインパラメータで「データベース」のアクターIDとキャラクター名を紐づけることができます。
* これにより<Player:harold>のような簡易的な記述でアクターを切り替えることができます。
* 新規キャラクターを追加した場合やアクターIDを変更した場合は、このプラグインの紐づけも対応させてください。
*
* 例:
* <Player:harold>
*/
/*~struct~ActorConfig:
* @param Character ID
* @text キャラクターID
* @type string
* @desc マップメモタグで使用する識別子(例:harold)
*
* @param Actor
* @text アクター
* @type actor
* @desc 切り替えるアクター
*/
(function () {
var parameters = PluginManager.parameters("UM_MapActorSetting");
var MapActorSettings = JSON.parse(parameters["MapActorSettings"] || "[]").map(
(setting) => JSON.parse(setting)
);
var _Game_Player_performTransfer = Game_Player.prototype.performTransfer;
Game_Player.prototype.performTransfer = function () {
_Game_Player_performTransfer.call(this);
switchActorByMap();
};
function switchActorByMap() {
if ($dataMap && $dataMap.meta.Player) {
var characterId = $dataMap.meta.Player;
var actorConfig = MapActorSettings.find(
(config) => config["Character ID"] === characterId
);
if (actorConfig) {
var newActorId = Number(actorConfig.Actor);
var currentLeader = $gameParty.leader();
var currentLeaderId = currentLeader ? currentLeader.actorId() : null;
if (currentLeaderId !== newActorId) {
if (currentLeaderId) {
$gameParty.removeActor(currentLeaderId);
}
$gameParty.addActor(newActorId);
$gamePlayer.refresh();
}
}
}
}
var _Scene_Map_start = Scene_Map.prototype.start;
Scene_Map.prototype.start = function () {
_Scene_Map_start.call(this);
switchActorByMap();
};
})();