【问题标题】:Unity 3D fade from one skybox to anotherUnity 3D 从一个天空盒渐变到另一个天空盒
【发布时间】:2016-07-23 00:53:21
【问题描述】:

我有四个不同的天空盒,每个赛季都有一个。

如何在 c# 中创建天空盒之间的淡入淡出过渡?

例如,在某个时刻,夏季天空盒淡入秋季天空盒。

谢谢!

【问题讨论】:

    标签: c# unity3d skybox


    【解决方案1】:

    您需要在着色器中进行混合,one on the Unify wiki 可以在两个天空盒之间进行混合。

    您需要使用脚本(使用 material.SetTexture)交换材质中的纹理,当它完成其中 2 个之间的混合后,才能获得 4 个之间的混合效果。

    【讨论】:

    • 我已经设置了着色器和材质,并使用滑块混合了天空盒。我如何在我的代码(c#)中编写它,以便它逐渐从 blend = 0.0 动画到 blend = 1?我知道您可以使用 skyboxmaterial.SetFloat("_Blend", blendNumber );但我需要在设定的时间内逐渐增加混合数。
    • 您可以使用 Mathf.Lerp(start, end, time) 来获取其他两个之间的值,其中时间介于 0 和 1 之间。使用它的简单(但技术上错误)的方式是像这样:material.SetFloat("_Blend" , Mathf.Lerp(material.GetFloat("_Blend"),1,Time.deltaTime)); 但这会让你在开始时快速混合,并在达到 1 之前减慢到停止。这篇文章中列出了最好的方法:chicounity3d.wordpress.com/2014/05/23/how-to-lerp-like-a-pro
    • 再一次,如果 _Blend 参数的范围是 0 到 1,那么您可能不需要 Lerp,您可以使用 Time.deltaTime 自己增加一个计时器变量并使用它。
    • 如何将天空框添加到混合着色器中,它们是材质,我不太清楚如何去做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多