知っていると便利なスクリプト一覧【RPGツクールMV/MZ用】
私はRPGツクールMVやRPGツクールMZでゲームを作っています。
スクリプト(JavaScript)も活用すると、ゲーム制作の自由度が高まると聞きました。
でも、私はプログラマーじゃないので、コードの書き方はよく知りません。
こんな私でも、簡単に使えるスクリプトを教えてほしいです。
こんなご要望にお応えします。
この記事の内容
- 簡単に使える便利なスクリプトを厳選してご紹介(RPGツクールMVやRPGツクールMZ向け)
RPGツクールMVやRPGツクールMZでゲームを作るなら、スクリプトも使えると圧倒的に有利になります。
なぜなら、イベントコマンドだけでイベント(処理の塊)を作るよりも、効率的に処理を作成できる場合もあるからです。
また、イベントコマンドだけでは実現できないイベントの作成も可能になります。
つまり、スクリプトが使えるだけで、あなたはスムーズにゲームが作れるようになるのです。
そして、ゲーム制作者としてのあなたの可能性も大きく広がります。
なので、RPGツクールMV/MZをご利用の場合は、積極的にスクリプトを使っていきましょう!
ちなみに、今回ご紹介するのは、どれも簡単に使える便利なコードだけに厳選しました。
基本的に「コピー&ペースト(コピーして貼り付け)」と「数値の入力」だけで簡単に使えます。
なので、気軽に使ってみてください。
それではご覧ください!
- 1. 知っていると便利なスクリプト一覧【RPGツクールMV/MZ用】
- 1.1. スクリプト①:ロード画面を開く
- 1.2. スクリプト②:オプション画面を開く
- 1.3. スクリプト③:デバイスの種類を判別する値を取得する
- 1.4. スクリプト④:日付(月・日・曜日・時間)の値を取得する
- 1.5. スクリプト⑤:イベントを指定場所まで移動させる
- 1.6. スクリプト⑥:同じマップ内でプレイヤーを一瞬で場所移動させる
- 1.7. スクリプト⑦:表示中のピクチャをすべて消去する
- 1.8. スクリプト⑧:ピクチャ番号で範囲指定して一括消去する
- 1.9. スクリプト⑨:マップのスクロールが完了するまでウェイトを入れる
- 1.10. スクリプト⑩:BGMの演奏をフェードインさせる
- 1.11. スクリプト⑪:指定したスイッチのONとOFFを逆転させる
- 1.12. スクリプト⑫:キーの入力判定をする
- 2. RPGツクールMV/MZでスクリプトを使う際の注意点
- 3. まとめ:スクリプトを使って効率よくゲームを作ろう!
知っていると便利なスクリプト一覧【RPGツクールMV/MZ用】
今回ご紹介するスクリプトの内容は下記のとおりです。
- ロード画面を開く
- オプション画面を開く
- デバイスの種類を判別する値を取得する
- 日付(月・日・曜日・時間)の値を取得する
- イベントを指定場所まで移動させる
- 同じマップ内でプレイヤーを一瞬で場所移動させる
- 表示中のピクチャをすべて消去する
- ピクチャ番号で範囲指定して一括消去する
- マップのスクロールが完了するまでウェイトを入れる
- BGMの演奏をフェードインさせる
- 指定したスイッチのONとOFFを逆転させる
- キーの入力判定をする
それでは、それぞれのスクリプトについて順番に解説していきます。
スクリプト①:ロード画面を開く
SceneManager.push(Scene_Load);
このスクリプトは、ゲーム中のあらゆる場面で「ロード画面」を表示できます。
つまり、ゲームプレイ中のユーザーに対して、任意のタイミングでセーブデータをロードさせたい場合に使えるのです。
例えば、「自作するメニュー画面のコマンド」や「ゲームオーバー時に表示されるコマンド」に使うと便利です。
あなたのゲームのUX(ユーザー体験)が向上し、より遊びやすいものに生まれ変わります。
ちなみに、このスクリプトを使わない場合、ロード画面を開くためにいちいちタイトル画面に戻る必要があります。
となると、ユーザーにとっては不便なゲームになってしまいますよね。
なので、ロード画面をすぐに表示できるこのスクリプトはマストで活用しましょう。
このスクリプトの使い方
このスクリプトは、イベントコマンド「スクリプト」で入力して使用できます。
イベントコマンド一覧の3ページ目にある「上級」内にあるコマンドです。
スクリプト②:オプション画面を開く
SceneManager.push(Scene_Options);
このスクリプトを使えば、ゲーム中のあらゆる場面で「オプション画面(コンフィグ画面)」を表示できます。
こちらも「自作のメニュー画面のコマンド」に使うと便利です。
ユーザーがいつでも設定を変更できるようになり、ゲームのUXを向上させられます。
実際に私のゲームでも、必ずと言っていいほど使用していますよ。
なのでこのスクリプトもぜひ、あなたのゲームで有効的に活用しましょう。
このスクリプトの使い方
こちらも同じく、イベントコマンド「スクリプト」で使用できます。
基本的に、どのマップでも呼び出せる「コモンイベント」で使用するのがオススメです。
スクリプト③:デバイスの種類を判別する値を取得する
navigator.userAgent.match(/(iPhone|iPad|iPod|Android)/i) !== null ? 1 : 0;
このスクリプトを使えば、ゲームを起動しているデバイスの種類を判別する処理が作れます。
つまり、ユーザーが「PCで遊んでいるのかスマホで遊んでいるのか」を読み取ることができるのです。
例えば、ゲーム中における「操作方法の表示」を分ける際に使うと非常に便利です。
また、PC用のUI(ユーザーインターフェース)とスマホ用のUIを分ける際にも使えますね。
なので、PCとスマホの両方に対応したゲームを作る場合は、もはや必須ともいえるスクリプトです。
RPGツクールMV/MZユーザーなら、ブラウザゲームを作る機会も多いはずなのでぜひ活用しましょう。
このスクリプトの使い方
このスクリプトは、イベントコマンド「変数の操作」内の「スクリプト」で使用できます。
設定後にイベントを実行すると、設定した変数に下記のとおり値が代入されます。
- スマホまたはタブレットで起動している場合は、1が代入される
- PCで起動している場合は、0が代入される
あとは、イベントコマンド「条件分岐」で、設定した変数の値が0か1の場合かでそれぞれ実行する処理を分ければOKです。
スクリプト④:日付(月・日・曜日・時間)の値を取得する
こちらのスクリプトは、「月」「日」「曜日」「時間」にそれぞれ分けて掲載しています。
「月(Month)」の値を取得
(new Date()).getMonth() + 1;
「日付(Date)」の値を取得
(new Date()).getDate();
「曜日(Day)」の値を取得
(new Date()).getDay();
「時間(Hours)」の値を取得
(new Date()).getHours();
これらのスクリプトを使えば、ゲーム起動時の日付や曜日、そして時間を取得できます。
つまり、ゲームを起動しているデバイスから、遊んでいる「日付や時間」を読み取ることができるのです。
例えば、「季節限定イベント」や「誕生日イベント」があるゲームを作る場合に便利です。
誕生日になると、ゲームキャラクターがお祝いしてくれるようなイベントがあっても面白いですよね。
他にも、少し工夫すればデイリーミッションや毎日配布のアイテムなども実装できます。
つまり、あなたのゲームが毎日遊んでもらえる内容に生まれ変わりますよ。
このスクリプトの使い方
ちなみにこのスクリプトも、「変数の操作」内の「スクリプト」で使用できます。
なお、曜日の値を取得する場合は、イベント実行後に下記の値が設定した変数に代入されます。
日曜 | 月曜 | 火曜 | 水曜 | 木曜 | 金曜 | 土曜 |
---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 |
あとは、イベントコマンド「条件分岐」で場合分けをし、各曜日ごとに処理を分ければOK。
曜日以外の値を取得する場合も、これと要領はほぼ同じです。
スクリプト⑤:イベントを指定場所まで移動させる
this.moveStraight(this.findDirectionTo(X座標,Y座標));
このスクリプトを使えば、特定のイベントを指定した座標まで移動させることができます。
つまり、イベントコマンド「移動ルートの設定」で、わざわざ細かく移動ルートを設定する必要がなくなるのです。
例えば、イベントシーンでキャラクターを歩かせる場合に便利です。
移動ルートを細かく指定しなくて済むようになり、ゲーム開発を圧倒的に効率化できます。
このスクリプトの使い方
このスクリプトは、イベントコマンド「移動ルートの設定」内の「スクリプト」に入力して使用できます。
(X座標,Y座標)には、設定するイベントの「移動先の座標」を半角数字で入力しましょう。
これでイベントを実行すると、指定した座標まで自動で移動してくれるようになります。
ただし、この処理は一回の読み込みで一歩ずつしか移動しません。
なので、オプションの「動作を繰り返す」にチェックを入れるか、イベントコマンド「ループ」内にコマンドを置く必要があります。
スクリプト⑥:同じマップ内でプレイヤーを一瞬で場所移動させる
$gamePlayer.reserveTransfer($gameMap.mapId(マップID), X座標, Y座標 , 向き);
$gamePlayer.performTransfer();
このスクリプトを使うと、同じマップ内の場合にプレイヤー(操作キャラクター)を一瞬で場所移動させることができます。
つまり、指定した座標に瞬間移動させることができるのです。
通常、イベントコマンド「場所移動」で移動させる場合は、プレイヤーが移動するまでには少しだけウェイト(待ち時間)が発生してしまいます。
ですが、このスクリプトを使用することで、同じマップで移動させる場合はその待ち時間が一切発生しなくなるのです。
例えば、ロード時間や操作できない時間を、可能な限り少なくしたゲームを作る場合に便利です。
ゲームを遊ぶユーザーに対し、可能な限りストレスを感じさせたくない場合に最適といえます。
このスクリプトの使い方
このスクリプトは、イベントコマンド「スクリプト」で使用できます。
上記スクリプト内の「マップID」には場所移動先のマップIDを半角数字で入力。
そして「X座標」と「Y座標」は、移動させたい位置をそれぞれ半角数字で入力しましょう。
また、場所移動後のプレイヤーの「向き」に関しては、それぞれ下記の半角数字を入力して指定しましょう。
上向き | 右向き | 左向き | 下向き | そのまま |
---|---|---|---|---|
8 | 6 | 4 | 2 | 0 |
ちなみにこれは、テンキーに対応している数字と同じです。
もしも、場所移動後に向きを変える必要が無ければ、上記スクリプトの「, 向き」の部分を削除して記述してもOK。
0を入力した場合と同じく、移動させる前と同じ向きでプレイヤーが場所移動します。
スクリプト⑦:表示中のピクチャをすべて消去する
$gameScreen.clearPictures();
このスクリプトを使えば、表示中のピクチャをすべて消去することができます。
つまり、表示しているピクチャを全消ししたい場合に、一枚一枚にわざわざイベントコマンド「ピクチャの消去」を実行しなくてよくなるというわけです。
例えば、ピクチャを多く使うゲームの場合に便利です。
セーブ時などに表示中のピクチャを全消ししたりする際に最適ですよ。
このスクリプトの使い方
このスクリプトは、イベントコマンド「スクリプト」に記述して使用できます。
一応、次にご紹介するように、ピクチャ番号ごとに繰り返し処理で1枚ずつ消していく方法もあります。
ですが、全消しする場合は、このスクリプトのほうが記述も少なく、何より簡単なのでオススメ。
スクリプト⑧:ピクチャ番号で範囲指定して一括消去する
for (let i = 開始値; i <= 終了値; i++) {
$gameScreen.erasePicture(i);
}
上記のスクリプトを使えば、表示中のピクチャをピクチャ番号で範囲指定して、一括消去することができます。
つまり、全消しはしたくないけど、特定の番号から特定の番号までのピクチャをいっぺんに消去したい場合に便利というわけです。
ピクチャをたくさん使うゲームを開発する場合、これを使用すると非常に便利ですよ。
いちいちピクチャ番号を指定して消去する必要がなくなり、作業を効率化できます。
このスクリプトの使い方
このスクリプトは、イベントコマンド「スクリプト」に記述して使用できます。
ピクチャ番号1~10を消去したいのであれば、「開始値」に1を入力し、「終了値」に10を入力すればOKです。
スクリプト⑨:マップのスクロールが完了するまでウェイトを入れる
this.setWaitMode('scroll');
このスクリプトを使うと、マップのスクロールが完了するまで、自動的にウェイトが入るようになります。
つまり、マップのスクロールが完了するまでに必要なウェイトを、わざわざ手動で指定する必要がなくなるのです。
例えば、「イベントシーンの多いゲーム」や「演出にこだわるゲーム」に使うと非常に便利ですよ。
このスクリプトの使い方
このスクリプトは、イベントコマンド「スクリプト」に記述後、イベントコマンド「マップのスクロール」の直後に配置することで使えます。
あとは、イベントを実行すると、マップのスクロール時に自動でウェイトが挿入されます。
スクリプト⑩:BGMの演奏をフェードインさせる
AudioManager.fadeInBgm(秒数);
このスクリプトを使えば、BGMを再生する際に音量を徐々に大きくさせることができます。
例えば、演出を作りこむゲームに使うと便利です。
いきなり普通の音量で音楽を流すよりも、少しずつ再生したほうが良い場面もありますよね。
このスクリプトの使い方
このスクリプトは、イベントコマンド「スクリプト」に入力し、イベントコマンド「BGMの演奏」の直後に配置することで使用できます。
なお、上記スクリプトの「秒数」の部分には半角数字を入力しましょう。
例えば、「(5)」にした場合は「5秒かけてフェードイン」で実行されます。
これでイベントを実行すると、BGMの再生が設定した音量まで5秒間かけて徐々に大きくなっていきます。
スクリプト⑪:指定したスイッチのONとOFFを逆転させる
$gameSwitches.setValue(スイッチ番号, !$gameSwitches.value(スイッチ番号));
このスクリプトを使えば、指定したスイッチのONとOFFを逆転させることができます。
つまり、スイッチがOFFであればONに、ONであればOFFに切り替えることができるのです。
例えば、脱出ゲームなどで「ボタンを押す要素」を作る際に非常に便利です。
イベントコマンド「条件分岐」で作成するよりも記述が少なく済み、効率的にゲーム開発作業を進められます。
ちなみに、スイッチ番号を2か所も書き換えるのが面倒な場合、コードの行数は増えますが下記のスクリプトを使用してもOK。
let adswitchId = スイッチ番号;
$gameSwitches.setValue(adswitchId, !$gameSwitches.value(adswitchId));
上記のスクリプトは、最初に変数「adswitchId」にスイッチ番号を指定しておくという書き方。
これなら、スイッチ番号を1か所入力するだけで済むので、入力ミスのリスクも最小限に抑えられます。
このスクリプトの使い方
このスクリプトは、イベントコマンド「スクリプト」に記述して使用できます。
上記のスクリプトの「スイッチ番号」の部分に、ON/OFFを逆転させたいスイッチ番号を半角数字で入力してください。
例えば、「スイッチ番号」の部分に8を指定すれば、スイッチ0008のONとOFFが切り替わります。
スクリプト⑫:キーの入力判定をする
Input.isPressed('キー名');
このスクリプトを使えば、イベントコマンド「条件分岐」で選択できるボタン以外の入力も、判定できるようになります。
つまり、「決定」「キャンセル」「シフト」「下」「左」「右」「上」「ページアップ」「ページダウン」以外のキー入力判定も行えるということです。
例えば、元から入力判定できるキーやボタンに加えて、入力判定するキーを増やす場合に便利です。
このスクリプトの使い方
このスクリプトは、イベントコマンド「条件分岐」内のスクリプトに入力して使用できます。
「キー名」には、判定させたいボタンやキーに応じて、下記の半角英数字を入力しましょう。
判定させたいボタンやキー | 入力するキー名 |
---|---|
Tabキー | tab |
決定キー | ok |
キャンセルキー | cancel |
シフトキー | shift |
下キー | down |
左キー | left |
右キー | right |
上キー | up |
ページアップキー | pageup |
ページダウンキー | pagedown |
例えば、Tabキーを判定させたい場合は、下記のように記述すれば良いわけです。
Input.isPressed('tab');
補足:他のキーも追加して使えるようにする方法
上記の表には無い他のキーも判定させたい場合もあるかと思います。
そんな場合は、少し手間はかかってしまいますが、プラグインを作成して操作可能なキーを追加する必要があります。
イベントコマンドの「スクリプト」で記述する方法もありますが、私の経験上オススメできません。
なぜなら、あくまで一時的なもので、場合によっては再度そのスクリプトを読み込ませないとキー入力を受け付けなくなってしまうからです。
なので、基本的にはプラグインを作成して操作可能なキーを追加するのがオススメ。
とはいえ、プラグインを作成するのが初めての方もいらっしゃると思います。
そこで、そんなあなたのために、今回のプラグインを作成する際のテンプレートをご用意しました。
まず、テキストエディタ(Windowsのメモ帳など)を開き、下記のコードをコピペしてください。
//===============================================
// 半角英数字の任意のプラグイン名.js
// (C) 作成した年 作者名
//===============================================
/*:
* @plugindesc プラグインの簡潔な説明
* @author 作者名
*
* @help プラグインのヘルプ(機能や使い方など)
*
*/
(function() {
//キーボード用
Input.keyMapper = {
//ここにInput.keyMapperの中身をコピペ
//ここに任意のキーを追加
};
//ゲームパッド用
Input.gamepadMapper = {
//ここにInput.gamepadMapperの中身をコピペ
//ここに任意のボタンを追加
};
})();
次に、「rpg_core.js(※MZの場合はrmmz_core.js)」から「Input.keyMapper」と「Input.gamepadMapper」の中身をそれぞれコピペします。
そしたら、前者の「’debug’」と後者の「’right’」の後ろに、「,」がついているかを確認してください。
もし「,」が無い場合は記述しましょう。
あとは、任意のキーを下記の形式で記述すればOK。
キーコード: '任意のキー名',
これで、あなたの使いたいキーが操作可能なキーとして追加されます。
例えば、キーボードのGキーを追加したい場合は、下記のように記述します。
71: 'G',
また、ゲームパッドのYボタンを、そのGキーに対応させたい場合は下記のように記述すればOKです。
3: 'G',
なお、キーコードに関しては、「キーボード キーコード」と検索して調べましょう。
キーコードの一覧表はさまざまなサイトで掲載されています。
最後に、このデータを半角英数字で任意の名前を付けて保存し、拡張子を「.js」に変更してください。
以上で、操作可能なキーを追加するプラグインの完成です。
RPGツクールMV/MZでスクリプトを使う際の注意点
RPGツクールMV/MZでは、スクリプトを使用する際には少しだけ注意点があります。
それは、記述するスクリプトの末尾には、必ずセミコロン(「;」)をつけるべきだということです。
なぜなら、セミコロンをつけないとエラーが発生する場合もあるからです。
よく他の方の記事やポスト等では、「JavaScriptなのでセミコロンは省略してもOK」という意見が書かれています。
しかし、予期せぬバグが発生する場合もあるので、基本的にセミコロンの省略は非推奨です。
実際、私はRPGツクールMVでゲームを作っていた時に、スクリプトのセミコロンを省略したせいでエラーが発生しました。
たった一つのセミコロンを省略したせいで、デバッグに半日を費やすという苦い経験をしているのです。
なのであなたは、RPGツクールMVやRPGツクールMZでスクリプトを使う場合、必ずセミコロンはつけるようにしましょう。
もう一つだけ注意点があります。
スクリプト(プラグイン)を作成する際は、なるべく「var」の使用は控えて「let」や「const」を使用しましょう。
ES6(ES2015)以降では、varの使用を避けることが推奨されているためです。
varはletやconstと違い、再宣言を防げないですし、バグや競合が発生するリスクが高めです。
RPGツクールMZやVersion 1.6.0以降のRPGツクールMVはES6の記法でOK。
なので、varの代わりにletやconstを積極的に使用しましょう。
まとめ:スクリプトを使って効率よくゲームを作ろう!
今回はRPGツクールMVやRPGツクールMZを使うあなたに向け、簡単に使える便利なスクリプトをご紹介しました。
RPGツクールMV/MZでは、スクリプトも使えると効率よくゲーム開発できます。
そして、イベントコマンドだけでは実現できない要素も作成可能になります。
なので、RPGツクールMV/MZでゲームを作る場合は、今回ご紹介したスクリプトを積極的に使ってみましょう!
すると、あなたの作るゲームの可能性は圧倒的に広がりますよ!
とはいえ、複雑な処理を実行させたい場合は、プラグインを活用したほうが効率的な場合もあります。
プラグインは自作することもできますが、すでに同様の機能を備えたプラグインを、他の方が作成して配布してくれていることもあります。
そこで、下記の記事でRPGツクールMVやRPGツクールMZで使えるプラグインをまとめました。
特に便利で使いやすいプラグインを厳選してご紹介しています。
RPGツクールMV/MZをさらに使いこなしたい場合は、ぜひご覧になってください。
»おすすめのプラグイン16選【RPGツクールMV】