RPGツクールMZのタイマーの時間を調整したい

RPGツクールMZにはタイマー機能があり、「時間内に脱出しないとゲームオーバー」などのイベントを作ることができます。
このタイマーを使えばいろいろと面白いイベントが作れるのですが、そのまま使うとタイマーの時間が操作できず、タイマーの開始・停止ができるのみです。
しかし、2020年11月現在では前作・RPGツクールMVで使えた優良なプラグインが適応できず、RPGツクールMZでタイマーの時間を操作をするためのプラグインはない状態です。

今回はプラグインを使わずにタイマーを操作する方法を解説します。

タイマー操作は「スクリプト」を使う

プラグインを使わずにRPGツクールMZでタイマー操作をするには、イベントの機能の中の「スクリプト」を使います。
スクリプトでは、RPGツクールMZに直接プログラム言語・JavaScriptを記述することができます。

まずは結論からで、タイマーを10秒進めるスクリプトをご紹介します。

var time = $gameTimer.seconds()*60 - 600 ; 
$gameTimer.start(time);

ここからはこのスクリプトの解説をしていきます。

変数

“var time”というのは、「timeという変数」を意味しています。
変数というのは中学校の数学にでてきた” x = ~~”の式のようなものです。
これはプログラミングでは共通の言葉ですが、もし今一つ理解できなければ、無理に理解しようとせず、次に進めていってください。

RPGツクールMZの関数

“$gameTimer.seconds()”「RPGツクールMZのゲーム中のタイマーの時間」を意味しています。
また、2行目の“$gameTimer.start(time)”「timeの時間でタイマーをスタートする」を意味しています。この( )内の数値はtimeでなくとも、数字でも他の変数でもかまいません。
“$gameTimer.seconds()”や”$gameTimer.start()”は関数と呼ばれますが、これらの記述はRPGツクールMZでのみ使えるものです。

タイマーの時間

“var time = $gameTimer.seconds()*60 – 600”の中で-600という引き算がでてきます。これが「10秒進める」という部分に該当するのですが、なぜ「600」なのでしょうか?
これはRPGツクールMZが1フレームを1/60秒にしていることが影響しているのですが、これも難しく考えず、目的の秒数の60倍をすればよいでしょう。

先ほどのスクリプトを日本語にすると

上で紹介したスクリプトを日本語にすると、以下のようになります。

timeとは、現在のタイマーの時間から10秒進めた時間である。
タイマーをtimeの時間(現在のタイマーの時間から10秒進めた時間)からスタートする。

このような理屈で、先ほどのスクリプトはタイマーを進めることに成功しています。
もし進める時間を変更したい場合は、あまり深く考えず、「- 600」の部分を調整すればよいでしょう。
また、時間を進めるのではなく、遅らせたい場合は「- 600」ではなく、「+ 600」というように、プラスにすれば実現できます。
このようにすれば、プラグインがなくても簡単にタイマーの時間を操作することができます。

関数を知るとスクリプトでできることの幅が広がる

今回使用した$gameTimer.seconds()のような関数については、下記のRPGツクールMZの公式サイトでいろいろと紹介されています。

これらの関数を使えば、スクリプトでできることの幅が広がるので、JavaScriptの勉強がてら覚えていってはいかがでしょうか?