なんか作って載せます

タイマーの動作は並列実行で。

タイマーを作ってみる。【EV・コモン】



 制限時間のあるイベントってよくありますよね。
 特定の条件を満たすとタイマーが停止してクリアとか、タイムオーバーでゲームオーバーになっちゃうとか。


 今回はそのタイマーを作ってみるわけですけど、タイマーを作るにはまず、「1秒をカウントするにはどうすればいいか」を考える必要があります。

 「ゲームの基本設定」で、「30fps」か「60fps」かを選べますよね?
 fpsは「Frames Per Second」の略で、1秒間のフレーム数を表します。
 つまり、前者は「30フレームで1秒」、後者は「60フレームで1秒」ということになります。
 ここでは、60fpsでやっていきます。

 60fpsってことは、例えば1分のタイマーを作りたい場合、60フレームのウェイトを60回繰り返すループを作ればいいってことになりますね。

 処理の流れとしては、まず残り時間変数を用意し、初期値を60にする。
 60フレームのウェイトの後に、残り時間変数を-1する。
 それを60回繰り返させる……ですね。
 ピクチャ表示したい場合は、ウェイトの前に表示処理を置きます。

 作り方がわかったところで、一例として私が作ったコモンイベントの処理を載せていきます。
 残り時間をどれくらいにするかは、マップイベント側で決めます。

 まず、起動条件はこう。
コモン起動条件

 予備変数V2-2が、この並列実行コモンの起動スイッチです。V2-2が1の時、処理が始まります。

 「99時間59分59秒」を上限とするので、それを秒数に直した「359999」を超えないように制御処理を設けます。
 V2-3が残り時間になるわけですが、0の場合はカウントが始まらないので、これも除外します。
処理内容1

 V2-3をセルフ変数10番に代入して使います。この処理は、一度だけ通るようにしておきます。

 ピクチャ表示のために、処理が1ループするたびに、時、分、秒を算出します。
処理内容2

 ピクチャ表示の後、60フレームのウェイトを入れて、残り時間を-1して次のループに入ります。
処理内容3

 新しいループに入ったら、残り時間が0になっていないかをチェック。もし0になってたら、タイムオーバーなどの処理に移ります。

 そして、マップイベントの内容はこれ。
処理内容4

 V2-2が1になっているかをチェック。1ならタイマーがONになっているので、停止させるかの選択肢表示。
 V2-2が0なら、タイマーを起動させるかの選択肢表示。「はい」選択で、V2-3に設定した残り時間が代入され、タイマーがONになります。


 タイマーを途中で止められるように作りましたけど、ほかにもいろいろやり方はあると思うので、いろいろ試してみて下さい。


 今回はこれで終わります。


2012/05/27/Sun 更新
2013/09/07/Sat 内容修正

inserted by FC2 system