Lerp RenderSettings Skybox

时间:2019-02-10 12:06:04

标签: c# unity3d monodevelop

如何缓慢,平稳地更改天空盒。在我的代码中,它将检查幅度是否小于0.7。它现在正在工作,但是当我测试它会突然改变时,我想慢慢地改变它。有任何想法吗?谢谢你们的回答。非常感谢!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DayNight : MonoBehaviour {

    public Light light;

    public Material nightSkyBox;

    public Material daySkyBox;

    public float duration;

    void Update() {

        float phi = Time.time / duration * 2 * Mathf.PI;

        float amplitude = Mathf.Cos (phi) * 1.0f + 1.0f;

        light.intensity = amplitude;

        if (amplitude <= 0.7f) {
            RenderSettings.skybox = nightSkyBox;
            light.color = new Color32 (68, 170, 255, 255);
        } else {
            RenderSettings.skybox = daySkyBox;
            light.color = new Color32 (255, 181, 99, 255);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

对于此用例,建议您使用内置的动画系统。只需为您的相机创建一个动画师,然后通过关键帧更改昼夜的天空框

答案 1 :(得分:0)

我现在无法测试,但是您应该可以执行类似的操作。调整浮动参数以适应不同的时间。

RenderSettings.skybox.Lerp(daySkyBox,nightSkyBox,1f);

您可能不得不再次忍受一天的时间