如何在Unity中实现天空盒之间的平滑过渡?

5

我在Unity中有几个天空盒(白天和黑夜),想要定期实现它们之间的平滑过渡,以创建昼夜循环。我查阅了很多问题,但它们要么过时,要么我不知道它们的含义。任何帮助将不胜感激。


这个回答可能是你想要做的。你正在使用什么着色器来渲染天空盒?提供更具体的细节和更好的解释将有助于我理解清楚你的需求。 - leo Quint
@leoQuint 我正在使用一个六面天空盒。我想先渲染白天的天空盒。然后在特定时间之后,我希望白天的天空盒能够平滑地淡出,进入我准备好的夜晚天空盒。 - Umesh Konduru
给这个问题点赞。对其他人来说可能也很有趣。我在Unity论坛上找到了相同的问题,但都没有答案。大多数情况下需要自己创建着色器。 - Blindleistung
显然在Unify Wiki上有一个,但我不知道它是做什么的或者如何使用它。 - Umesh Konduru
1个回答

4
感谢评论回复。
我使用了这个着色器 - http://wiki.unity3d.com/index.php?title=SkyboxBlended ,正如在另一个问题的答案中建议的那样。问题是,很多初学者不知道如何使用着色器,我现在将进行说明。
  1. 在您的项目中创建一个着色器,打开它,并复制粘贴上面链接中的着色器。
  2. 创建一个材料。
  3. 将着色器拖动并放置到材料上。
  4. (假设您已经导入了天空盒纹理)如果您单击材料,它应该允许您在检查器窗口中放置12个纹理(6个用于一个天空盒,6个用于另一个)。
  5. 现在,通过玩弄Blend滑块,您应该能够看到您的天空盒淡入彼此:)。 您可以编写脚本来更改Blend值,以制作自动日/夜循环或季节循环。

如果您需要更多帮助,请随时发表评论。

编辑:该页面似乎不存在了,但我相信您会在GitHub上找到很多着色器。


2
我只是想知道你是否有任何想法,修改混合滑块的脚本会是什么样子?使用类似的组件,一整天都在努力使过渡平稳。 - Lewis Menelaws
我很久以前做过这个,老实说我不记得我当时做了什么。我只是模糊地记得使用了Time.time——我将混合值设置为时间的函数,并调整它以适应我的游戏时钟(1分钟=1小时)。自从我上次在Unity中编码以来已经过了很长时间,但如果您让我知道您想要做什么,我可以帮助您设计算法。 - Umesh Konduru
感谢您回复我,我正在尝试使用类似的着色器来循环显示天空盒,以向玩家展示他们在游戏中的进度。然而,我正在团队合作,我们在跨平台的Windows和Mac上使用着色器时遇到了问题。再次感谢您的帮助。 - Lewis Menelaws

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接