《Unity开发实战》——3.6节使用cookie纹理模拟多云的户外环境-阿里云开发者社区

开发者社区> 华章计算机> 正文

《Unity开发实战》——3.6节使用cookie纹理模拟多云的户外环境

简介:
+关注继续查看

本节书摘来自华章社区《Unity开发实战》一书中的第3章,第3.6节使用cookie纹理模拟多云的户外环境,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.6 使用cookie纹理模拟多云的户外环境
在很多第一人称射击和恐怖逃生游戏中,光照和阴影可以使场影变得很复杂,有助于营造游戏气氛。本节中,将使用cookie纹理创建多云的户外环境。

3.6.1 准备工作
如果没有图片编辑器软件,或者想跳过自己制作图片的步骤,而把精力放在实现上,可以直接用0423_03_05文件夹中cloudCookie.tga图片。

3.6.2 操作步骤
请按照下面的步骤模拟多云的户外环境:
1)在图片编辑器中,创建一张512×512的图片。
2)使用黑色作为前景色,白色作为背景色,打开Render Clouds过滤器(通过Photoshop的菜单Filter | Render | Clouds打开):


a92dd4f11c8417f2e3fc5b877b470c0ff11f67e3

7)保存图片,命名为cloudCookie.PSD或cloudCookie.TGA。
8)将图片导入到Unity中,在Project视图中选中。
9)在Inspector视图中,把Texture Type的值设置成Cookie,Light Type的值设置成Directional,如下图所示:


37548efd89d96d1eb2092f68fbaeb75111d92144

14)还需要一个脚本translate灯光和投影。使用Project视图的下拉菜单创建一个C#脚本,命名为MovingShadows。
15)打开脚本,替换成下面的代码:


be33360e5243f57a56efdeda4f2d3bb4821b32e0


b5ceab8c1e4a7cd6d9445f74bbcf27f772a00e78

16)保存脚本,并附加到 Directional Light上。
17)在 Inspector 视图中选择Directional Light,把Wind Speed X 和 Wind Speed Z 参数的值修改成 20 (也可以修改成自己认为合适的值)。 Light Cookie Size 参数的值必须修改成与Cookie Size一样的值 (本例中为80):


ecba33eafdbb37d9d925862a3f84628408ec640d

18)播放场景,阴影会移动。

3.6.3 实现原理
脚本中让 Directional Light通过x轴和z轴移动,从而引起 Light Cookie 纹理的位移。另外,重置light对象到原始位置,而无论其位移的距离大于还是等于Light Cookie Size 参数的值。Light的位置必须重置以阻止其移动得太远,引起实时渲染和光照的问题。Light Cookie Size 参数的值用于确保平滑的过渡。
关闭阴影的原因是light在x轴上的角度必须是90度(否则当light重置到原始位置时会有一个明显的空缺)。如果要在场景中有动态阴影,可以添加第二个方向光。

3.6.4 更多内容
本节中在方向光上应用了cookie纹理,如果用于Spot Light 或 Point Light cookies呢?
1.创建 Spot Light cookies
Unity文档中有一个很好的教程关于如何制作Spot Light cookies。模拟来自投影仪,窗口等的阴影,链接为http://unity3d.com/support/documentation/Manual/HOWTO-LightCookie.html

  1. 创建 Point Light cookies
    如果想使用带有point light 的cookie 纹理,可以在Inspector视图中的Texture Importer 块中修改Light Type 的值。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Unity 之 贝塞尔曲线介绍和实际使用
Unity 中对贝塞尔曲线的实战应用,制作可视化操作曲线工具,文末附工具源码链接~
44 0
使用ApiPost测试接口时需要先登录怎么办?利用Cookie模拟登陆!
在后台在开发、调试接口时,常常会遇到需要登陆才能请求的接口。本文主要介绍利用ApiPost发送Cookie,使服务器识别已登录用户的Cookie。
2616 0
iOS开发中 关于阿里云服务器的使用与安全策略 韩俊强的博客
使用背景:         云服务已经很多年了,早期没能加入使用云大军中的一员,后来后悔莫及。2015年记得当时没办法租用的虚拟主机三天两天挂了,导致我认认真真的考虑了一次,觉得还是要使用云服务器! 从免费的主机屋学习版到各种虚拟机的实验,再到之前是用300元左右买的别人的虚拟主机,空间有几G,感觉还行,正好又值他们搞活动,买两年送一年!预存还有返还!心动了,就没有任何考虑就预存了一千块! 开始的几个月感觉还行,速度什么的还过得去,就没去管网站的事了。
1422 0
Unity教程:GUI 界面开发
UI概述: UI永远是显示在屏幕的最前面上,不受变形、碰撞、光照的影响GUI概述:GUI是Graphical User Interface的缩写。Unity的图形界面系统能容易和快速创建出各种交互界面。
1810 0
阿里云短信使用入门/开发接口文档一篇文章全搞定
阿里云短信提供秒级触达到达率99%,国际/港澳台短信覆盖200多个国家和地区,阿里云短信接入简单
3372 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载