時刻に応じて照明の色(明るさ)を変える

どうぶつの森みたいな、現在時刻に応じて明るくなったり夕焼けしたり暗くなったりという機能を作りたかったので、簡単にですがやってみました。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//現在時刻に応じてシーン内の照明の色を変える
public class TimeLightManager : MonoBehaviour {
[SerializeField] Color[] lightColors;
[SerializeField] Light sceneLight;
void Awake(){
int hour = System.DateTime.Now.Hour;
int month = System.DateTime.Now.Month;
int value;
if (month == 1 || month == 11 || month == 12) {  //冬
value = 1;
} else if (month == 5 || month == 6 || month == 7) {  //夏
value = -1;
} else {  //春秋
value = 0;
}
if (hour < 5 + value) {  //夜中
sceneLight.color = lightColors [0];
} else if (hour < 8 + value) {  //朝
sceneLight.color = lightColors [1];
} else if (hour < 17 - value) {  //昼
sceneLight.color = lightColors [2];
} else if (hour < 18 - value) {  //夕方
sceneLight.color = lightColors [3];
} else if (hour < 22 - value) {  //夜
sceneLight.color = lightColors [4];
} else {  //夜中
sceneLight.color = lightColors [0];
}
}
}


[SerializeField] Color[] lightColors;
[SerializeField] Light sceneLight;

ここに各時間帯の照明の色と、シーン内の照明(基本的にはDirectional Light)をインスペクタから指定してください。

参考までに僕の設定した色を示しておきます。

上から順に朝(#E5FFFCFF)、昼(#FFF4D6FF)、夕方(#C98F3AFF)、夜(#4D4962FF)、夜中(#0A0613FF)です。
昼は初期設定のままにしました。

ちなみにこの画像は『鉄骨ワタリ』というゲームからです↓

朝とか夜中なんていらない!って人や、もっと滑らかに色を変えたい!って人は好きなようにカスタマイズしてください。
海外にはあんまり対応してない(南半球だとそもそも夏冬逆だし笑)ので、ご注意。

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です