本节书摘来自华章社区《Unity开发实战》一书中的第2章,第2.4节自定义镜头光晕效果,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看
2.4 自定义镜头光晕效果
过去15年里,在户外环境玩过游戏的任何玩家都知道:镜头光晕(lens flare)效果用于模拟明亮的光照穿透玩家的视野。虽然这个技术现在已经用滥了,但仍然出现在各类游戏中。本节将练习创建镜头光晕效果。
2.4.1 准备工作
强烈建议读者用图片编辑器(Adobe Photoshop或GIMP)打开图片。示例代码中的0423_02_03文件夹中有本节需要用到的镜头纹理(lens texture)的源代码。
2.4.2 操作步骤
请按照下面的步骤创建一个新的镜头光晕纹理并应用到场景中:
1)通过菜单的Assets | Import | Package | Character Controller导入Unity自带的Character Controller(角色控制器)包。
2)再用同样的步骤导入Light Flares(光晕)包。
3)在Hierarchy视图中,用Create按钮添加一个Directional Light(方向光)效果到场景中。
4)选中你的摄像机,再通过菜单的Component | Camera Control | Mouse Look 选项,添加一个Mouse Look组件。
5)在Project视图中,找到Sun光晕(在Standard Assets | Light Flares目录下),复制(选中后按Ctrl+D)一份,重命名为“MySun”,如下图所示:
6)在Inspector视图中,点击Flare Texture让Project视图中与其对应纹理的文件位置显示出来,应该是一个叫做50mmflare的纹理。
![a0d17be38bf52d0e1fa69352454868a86e5ce71e](https://i-blog.csdnimg.cn/blog_migrate/e6c64501b1989d3bfd5fa32c4de279bc.png)
9)要自己创建的话,(在Photoshop中)创建几个Circle(圆)形,添加不同的Layer Effects(层效果),如Gradient Overlay(渐变叠加)、Stroke(描边)、Inner Glow(内发光)和Outer Glow(外发光)。
10)通过编辑那张原始的图片或者绘制几条线,然后把线变模糊,就可以重新创建一个星形的光晕了。
![89dc6bfd667bf1a1534a8ae818d84527312b334f](https://i-blog.csdnimg.cn/blog_migrate/b474efebc27d81f970935e3f2c391298.png)
13)在Project视图中选择Directional Light(方向光),在Inspector视图中把Flare的属性设置成MySun。
![2e34dfac88a6855abdcf1e6535fe6237dd93c0ac](https://i-blog.csdnimg.cn/blog_migrate/4bc7f2545152cec874b6bf6091fb3bc1.png)
14)播放场景,绕着移动鼠标来回转,就可以看见镜头光晕就像摄像机对着光一样的效果。
2.4.3 实现原理
我们已经用Unity内置的镜头光晕纹理作为设计图,而后,当玩家的视线接近光的方向时镜头光晕纹理就会显示。
2.4.4 更多内容
光晕纹理可以为每个元素使用不同的布局和参数。如果你想了解更多关于Lens Flare effect的知识,可以查看Unity的文档:http://docs.unity3d.com/Documentation/Components/class-LensFlare.html。