こんにちは。
RPGツクールMZでフリーゲームを制作中です。
今回はツクールMZの”タイマー”を使ってみたのでそのハナシにしようと思います。
基本的な使い方
ツクールMZのタイマーはカウントダウンするタイマーを使ってその残り時間でイベントを分岐させるというものです。
イベントコマンドに”タイマーの操作”とあります。
始動か停止を選んで始動の場合は残り時間を指定。タイマーの操作としてはこれだけ。
あとは条件分岐の条件をタイマーにして発動させたい時間を指定します。自動で発動させるならトリガーは自動実行か並列処理。
時間がゼロになったときにゲームオーバーとするならこう↓
イベントページの出現条件にセルフスイッチを使っているのはタイマー起動の時にセルフスイッチを入れているからです。
ゲームオーバーのように1回こっきりのイベントならトリガーは自動実行でも良いでしょう。
ゲームオーバーではなくその後もイベントを続けるならこんな感じ↓
並列処理のイベントは変数やスイッチで完結させましょう。上の例では3枚目イベントページの出現条件を2番スイッチにして完結させています。
終了時は基本的に並列処理を使うことになるのでそこだけちょっと特殊ですが、タイマー操作としてはオンとオフだけのシンプルなものです。
しかしそれ故に凝ったことは難しく、ツクールMZのデフォルトタイマー機能にはざっとでもこんな制約があります↓
①表示位置は画面上中央で固定。
②カウントダウンのみでカウントアップは無し。
③表示形式は00:00で固定。大きさも固定。
④一時停止コマンドは無し。
(会話中や戦闘中はカウントが進む。停止させると表示が消える。)
⑤カウント中は表示固定(非表示にできない。)
⑥メニュー画面展開中はカウントが一時停止する。
結構ありますよね(;・∀・) しかもどれもデフォで変えれてもいいような(;・∀・)
スクリプト
スクリプトを使うなら疑似的に一時停止は可能です。
タイマーを開始するスクリプト↓
$gameTimer.start() ()内に開始の時間(フレーム単位)
タイマーの現在残り時間を取得するスクリプト↓
$gameTimer.seconds() 取得する値の単位は"秒"
この2つでタイマー停止直前に残り時間を取得し、再スタート時に取得した時間で始める、とすれば一時停止になります。制作ゲームに於いてこれだけで他は要らないのならば良いですがなかなかそうはならないでしょう。
ちなみにタイマーを停止するスクリプト↓
$gameTimer.stop()
タイマーが動作しているか判定するスクリプト↓
$gameTimer.isWorking()
プラグイン
実はこれらはプラグインでほぼほぼ解決します。
一時停止等のタイマー操作 作:トリアコンタン 様
戦闘中タイマー停止。 作:トリアコンタン 様
タイマーをミリ秒単位に変更。表示位置の変更。 作:tomoaky 様 ムノクラ 様
タイマーをカウントアップ形式に変更。 作:ムノクラ 様
タイマーの表示を変更。 作:MihailJP 様
いまのところプラグイン無しで動作テストしてるんですけど上のどれかは使うことになるんじゃないかと思います。
ゴリラ技
冒頭でタイマーを”使ってみた”と書きましたが拙作の早食いバトルをやったことがある方は「使ってただろ」と思ったかも知れません。約100秒の間にどれだけ食べるかの競争ゲームですからね。
でもアレ、タイマーのイベントコマンドは使ってないんですよ。制作開始当初は使うつもりだったんですけどやめました。
アレは並列処理で1秒に1度、時計の針の画像を切り替えてそれを100回繰り返しているのです。そして100回繰り返したらゲーム終了、て構造です。
このゴリラ技の何がいいってプラグイン無しで①~⑤の問題は一気に解決できてしまうことです(④や⑤はある程度工夫が要ります)。
注意点は切り替える画像は極力軽くすることですかね(。-`ω-) あとピクチャ表示コマンドに1フレーム使うらしいこと。
今回もゴリラで行く選択肢は残っています(; ・`д・´)
ランキング参加中です。下のバナーをクリックして頂けるとやる気値が増幅します!!