现实生活中,当阳光直射大地,而天空中又有不少云时,云层的影子老是会投射在大地上,风吹着云层移动,影子也跟着运动,如图3-28所示。cookie
图3-28 天空中的云朵与大地上的影子函数
要在游戏中,模拟与之相似的大气现象时,就须要使用cookie类型的纹理。3d
本小节将使用PhotoShop绘制有云层效果的纹理图,而后为其添加透明度信息。具体操做过程以下:orm
(1)使用PhotoShop建立512×512像素大小的图。对象
(2)在PhotoShop内,单击【滤镜】|【渲染】|【云彩】命令,便可在瞬间完成云层的绘制,如图3-29所示。blog
图3-29 使用PhotoShop绘制云层游戏
(3)全选(Ctrl+A)并复制(Ctrl+C)此图像,切换到通道窗口下,新建通道,使用默认的名称Alpha 1,选中新建的通道,而后粘贴(Ctrl+V)。这样透明度的信息也就添加完了。游戏开发
(4)存储此云层纹理,而后导入到Unity。开发
为了模拟云层的移动效果,须要想游戏场景中添加相应对象,并作些简单设置,具体步骤以下:it
(1)在Project视图里,选中导入的云层纹理,而后在Inspector视图里设置下列属性值,如图3-30所示。
图3-30 设置云层纹理的属性
(2)单击GameObject|Create Other|Terrain和Directional Light命令,为游戏添加地形(Terrain)和方向光源(Directional Light)对象。
(3)选中Directional Light,而后在Inspector视图里,修改光源下列属性,如图3-31所示。
图3-31 修改光源的属性 图3-32 光线与地形平面垂直
光是将云层的阴影投射在地形平面上,还看不出什么效果,因此本小节打算编写一个脚本,用于控制云层的移动,这样的话效果会更好些。在Project视图下,建立一个C#脚本,并命名为MovingShadows。打开此脚本,写入下面的代码:
此脚本将被赋予方向光源。游戏开始运行时,脚本11行的Start()函数被执行,获知当前方向光源的位置;游戏运行时,16行的Update()在每帧都被执行的,做用是控制方向光源在XZ平面上的移动。
选中被赋予MovingShadows脚本的方向光源,在Inspector视图里能够看到脚本组件上的3个属性:Wind Speed X、Wind Speed Z和Light Cookie Size,如图3-33所示。
提示:属性的含义在脚本的注释中有说明。
图3-33 脚本组件上的3个属性
设置好云层的移动速度,调整好摄像机的视图效果后,就能够运行游戏了。固然了,看到的就是云层在地形表面上移动的场景了,如图3-34所示。
图3-34 模拟云层移动的效果
本文选自:Unity 游戏开发技巧集锦大学霸内部资料,转载请注明出处,尊重技术尊重IT人!