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