天候・昼夜変更システム



コンセプト ドラクエのように昼と夜を区別つけたかった。
ついでなんでコマンド「天候の変化」をより効果的に使ってみたかった。
完成すると 朝・昼・夕方・夜・深夜と一日が変化していきます。天候が気まぐれに変化していきます。実は戦闘中も天候の効果があったりします。


全てコモンイベントです。

時間監視=定期的に並列処理





まずは「テク3:リアルタイム時間監視」の説明。

「メニュー表示〜」のスイッチの条件分岐は自作メニューの表示中は処理を中断するような処理なのでいらない人は省いてください。
タイマー1の操作の後の条件分岐でタイマー1を表示するかしないかを処理しています。ウェイト0.1秒の後に各種処理をしていきます。タイマー1の格納変数は「日付タイマー:時間」という一日の時間を格納する変数です。イベント呼び出し「日付年月日」などは「1日の処理」をした後で日付を処理します。日付に関してはカレンダーとうるう年を考慮すれば簡単に処理できます。一ヶ月の日数は決まっていますし、うるう年も4年に一回だけです。2004年現在でうるう年だったはずなので考えてください。

タイマー1:条件設定=呼び出されたとき



まず、マップIDを格納する変数の条件分岐でフィールドにいるかそうでないかを分岐処理します。フィールドならウェイトを0.2秒入れてさっきのウェイト0.1秒とあわせて0.3秒おきに変数「日付タイマー:時間」を「5」ずつ加算していきます。これで0.3秒おきにゲーム内の時間は5分ずつ進んで行きます。自分のゲーム用なのでフィールドでは時間の進みを早くしています。マップID条件分岐の「それ以外の場合」からはフィールド以外=街・ダンジョンの中なのでウェイト0.9秒を入れて「1秒=1分」としてほぼリアルタイムに時間を処理していきます。
「戦闘テーマ変更・天候タイマー」の変数の加算は別途処理用のタイマー変数をここで一緒に処理することで1つのタイマーで複数の時間処理をしようというものです。天候タイマーは天候の処理のときに使います。


1日の変化:朝昼晩=呼び出されたとき





最初の条件分岐について、これは時間別に「早朝・朝・昼・夕方・夜・深夜」の条件分岐です。そして「24時間=60分×24時間=1440分」という感じです。タイマーは1分単位で加算しているので任意の時間に条件分岐することで昼夜の区別をつけれます。そして、1440より大きくなると変数「日付タイマー:時間」を「1440引く」処理をしタイマー1にその変数を入れてやります。こうすることで日付が変わっても時間が0:00から始まらないようにしています。
朝・昼・夜それぞれにスイッチを作り「屋内」というスイッチも作成しておきます。これは次の「マップ別処理」で屋外マップでない時の条件分岐でONにするスイッチで、「屋内」がOFFなら外であるということ。画面の色調変化にウェイトを加えることですこしずつ色が変化し雰囲気が出てきます。屋内から屋外に出る=つまり違うマップから外に出た場合には一瞬で表示をさせたいのでウェイトは0秒とし一瞬で表示します。そして処理が終わったあとは、夜なら明るい時間のスイッチをOFFにし夜スイッチをONにします。夜から朝など明るい時間になれば夜・深夜のスイッチをOFFにして朝スイッチをONにします。



ここまでが「テク3:リアルタイム時間監視」の説明となります。

マップ別処理=定期的並列処理


この間は省略。




ここから「テク2:天候・昼夜変更システム」の説明となります。

ここでは詳しく説明しませんが「マップID」別に条件分岐で次から説明するコモンイベント「1日の変化」や「天候変化」を呼び出すための定期的処理条件分岐です。家の中なのに夕日があったり雨が降ったりしては都合が悪いですよね?なので、屋外と思われるマップでのみ処理するように分岐をします。そして、条件分岐を続けて最後「それ以外の場合」では「外でない」ということになります。スイッチで「屋内」というのを作り、条件分岐で「屋内」がOFFの時天候エフェクト・画面の色調変化を元に戻し「屋内」をONにします。
分岐して呼び出すだけなので簡単ですね。

地形別天候処理:呼び出されたとき

天候変化のためには地形別に処理をしないといけません。

雪原で砂嵐はないですよね?



>







主人公がいる現在の地形を判断し「地形ID」別に処理をしています。歩行時の地形IDを判別して分岐するイベントです。主人公の状況監視イベントについては「定期的に並列処理」で現在座標・マップIDと地形IDをコマンドで組むだけなので説明しません。某テクニック研究サイトに出ています。砂嵐と吹雪は特殊なので専用にコモンイベントを作っておきます。逆に晴れ・雨・霧はどこでも出るように一緒に処理しておきます。

天候晴れ雨霧処理:呼び出されたとき

マップ別処理で呼び出されたときの処理です。

 

訂正 → 天候晴れ雨霧処理イベントのトップの条件分岐「天候タイマー:時間」20より大きいの後に変数「天候タイマー:時間」代入「0」とし、他の「天候タイマー:時間」代入「0」イベントを削除しないと正常動作しないことが確認されたのでこの文章にて訂正します。







まずは「天候を決める変数」とその「天候の強さ」を決める変数。それに天候状態を判断するための「天候スイッチ」を作ります。晴れスイッチ・雨スイッチ・霧スイッチなど。「天候を決める変数」「天候の強さ」の変数に「乱数」を代入してやります。ランダムに天候変化をさせたいので乱数です。
天候を決める変数で「条件分岐」により「数字がいくつなら晴れ!」とか決めてそれぞれ条件分岐します。「雨」の場合すぐに地形IDで「雪原」かどうか判断をし、雪原なら雨の処理をせずに吹雪の処理をします。別途作成のコモンイベントで吹雪の処理をします。
天候が決まったら「天候の強さ」を条件分岐します。そして、「天候タイマー」という「日付タイマー:時間」と一緒に出てきたのを覚えてますか?一緒に日付タイマーと処理をすることで天候時間を調整します。「天候タイマー」の条件分岐で指定時間以内でさらに条件分岐「天候スイッチ」がOFFなら「天候エフェクトの変化」のコマンドで変化させウェイトを入れてスイッチをONにします。「天候スイッチ」の条件分岐のときに「それ以外の場合」の処理もします。条件分岐で「屋内」がONの場合とし、天候「晴れ」スイッチをOFFにして「屋内」スイッチもOFFにして天候を変化させて「ウェイト」は入れないでおきます。こうすることで屋内に入ったとき瞬時に天候変化を元に戻していきます。

砂漠の天候変化:呼び出されたとき

 




先に説明したのと似た感じです。吹雪の場合も天候エフェクトと変数・スイッチをそれように作るだけです。

天候SE処理:定期的並列処理





この処理はより雰囲気を出すためにSEを出そうというものです。雨とかの音は「曲」の素材のほうに最初から入っていますが効果音素材として入れなおすと音楽がかかったまま雨の音が出たりします。処理は簡単です。天候スイッチで条件分岐をし効果音を鳴らしウェイトを入れてやるだけです。「天候SEON」をOFFにします。ウェイトは繰り返し効果音が鳴るので違和感がないように聞きながら調整していきます。
名前が変ですよね?「天候SEOFF」じゃないとおかしい・・・最初の条件分岐に「屋内」がONならという条件分岐をしスイッチ「天候SEON」がONであれば効果音をOFFにして「天候SEON」をOFFにして処理を終わります。雨の場合は「天候の強さ」の変数を絡ませて条件分岐し雨の強さ別に効果音を鳴らします。

追記:乗物に乗っているときの条件分岐を入れないと空飛んでるのに足音が聞こえる等の不具合が発生します。

 

 

にしても、分かりづらい説明だな・・・
自分専用に作ったやつを公開してるんで勘弁してやってください。
注釈の文の意味を考えながら何とか理解してみてください。



テク貼り付け位置






テンプレートのpondt