【Unity5】GIデモ「The Courtyard」解剖、その3

「The Courtyard」の時刻制御のシステム部分のみ抜き出して、簡単なシーンを作ってみました。

動画がこちら

ポイントは以下。

1.DirectionalLightが時刻にあわせて回転して影と周囲の自然光を作り出している。

2.時刻に連動して、室内のライトが点灯、消灯している。

3.時刻に連動して、スカイボックスが回転して天体の運行を表現している。

この部分のスクリプトはほぼ解読できました。

難しいことはやってなくて、まず、大元になるTimeOfDayManagerクラスで時刻の更新を管理している。

時刻の影響を受けたいライトオブジェクトにはObjectPropertiesのサブクラスであるLightPropertiesやSunPropertiesなどをアサインしてあげる。

そうすると、TimeOfDayManagerと時刻情報が同期されて、その時刻にあったライトの色や状態(点灯したり消灯したり)に更新されるという感じ。

どの時刻にどんな色や光の強さにするかは、LightPropertiesをアサインしたライトオブジェクトのパラメータで定義する。

もうひとつ、アンビエントライトについて、このライトの時刻同期システムでは、アンビエントライトにスカイボックスを使わずに三色設定を使っている。

それに対して、EnvironmentUpdaterというスクリプトで、時刻にあった色にアンビエントライトを動的に書き換えることで、スカイボックスとほぼ同等のクオリティの環境光を作り出している。

時刻にあわせた環境光(3色の定義)もプロパティで設定する。

スクリプトもシンプルなつくりになっているので、この時刻同期システムの仕組みをまねて、いろんなゲームに使えそうだ。

今度、GAIAで作ったテラインと組み合わせてみようと思う。

3年前

コメントを残す

メールアドレスが公開されることはありません。