DayNightCycle | Showreel

PHOTO EMBED

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);
    }
}

content_copyCOPY