DayNightCycle | Showreel
Tue May 17 2022 16:03:38 GMT+0000 (Coordinated Universal Time)
Saved by @BiscuitTinx #c#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DayNightCycle : MonoBehaviour
{
public Material Day;
public Material Night;
public Material Sunset;
[Range(0.0f, 1.0f)]
public float time;
public float fullDayLength;
public float starTime = 0.4f;
private float timeRate;
public Vector3 noon;
[Header("Sun")]
public Light sun;
public Gradient sunColor;
public AnimationCurve sunIntensity;
[Header("Moon")]
public Light moon;
public Gradient moonColor;
public AnimationCurve moonIntensity;
[Header("Other Lighting")]
public AnimationCurve LightingIntensityMultiplier;
public AnimationCurve reflectionIntesityMultipier;
void Start()
{
RenderSettings.skybox = Day;
timeRate = 1.0f / fullDayLength;
time = starTime;
}
void Update ()
{
Day.color = new Color(0, 0, 0);
if (time > 0.6)
{
RenderSettings.skybox = Sunset;
}
if (time > 0.75)
{
RenderSettings.skybox = Night;
}
if (time == 1 || time == 0)
{
RenderSettings.skybox = Day;
}
// increment time
time += timeRate * Time.deltaTime;
if (time >= 1.0f)
time = 0.0f;
// light rotation
sun.transform.eulerAngles = (time - 0.25f) * noon * 4.0f;
moon.transform.eulerAngles = (time - 0.75f) * noon * 4.0f;
// change colors
sun.color = sunColor.Evaluate(time);
moon.color = moonColor.Evaluate(time);
// enable / disable the sun
if (sun.intensity == 0 && sun.gameObject.activeInHierarchy)
sun.gameObject.SetActive(false);
else if (sun.intensity > 0 && !sun.gameObject.activeInHierarchy)
sun.gameObject.SetActive(true);
// enable / disable the sun
if (moon.intensity == 0 && moon.gameObject.activeInHierarchy)
moon.gameObject.SetActive(false);
else if (moon.intensity > 0 && !moon.gameObject.activeInHierarchy)
moon.gameObject.SetActive(true);
}
}



Comments