《Unity开发实战》——2.4节自定义镜头光晕效果
本节书摘来自华章社区《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://yqfile.alicdn.com/a0d17be38bf52d0e1fa69352454868a86e5ce71e.png)
9)要自己创建的话,(在Photoshop中)创建几个Circle(圆)形,添加不同的Layer Effects(层效果),如Gradient Overlay(渐变叠加)、Stroke(描边)、Inner Glow(内发光)和Outer Glow(外发光)。
10)通过编辑那张原始的图片或者绘制几条线,然后把线变模糊,就可以重新创建一个星形的光晕了。
![89dc6bfd667bf1a1534a8ae818d84527312b334f](https://yqfile.alicdn.com/89dc6bfd667bf1a1534a8ae818d84527312b334f.png)
13)在Project视图中选择Directional Light(方向光),在Inspector视图中把Flare的属性设置成MySun。
![2e34dfac88a6855abdcf1e6535fe6237dd93c0ac](https://yqfile.alicdn.com/2e34dfac88a6855abdcf1e6535fe6237dd93c0ac.png)
14)播放场景,绕着移动鼠标来回转,就可以看见镜头光晕就像摄像机对着光一样的效果。
2.4.3 实现原理
我们已经用Unity内置的镜头光晕纹理作为设计图,而后,当玩家的视线接近光的方向时镜头光晕纹理就会显示。
2.4.4 更多内容
光晕纹理可以为每个元素使用不同的布局和参数。如果你想了解更多关于Lens Flare effect的知识,可以查看Unity的文档:http://docs.unity3d.com/Documentation/Components/class-LensFlare.html。
《Unity开发实战》——导读 本节书摘来自华章社区《Unity开发实战》一书中的目录,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看
相关文章
- 【Python3网络爬虫开发实战】3.3-正则表达式
- 【Python3网络爬虫开发实战】 1.5.4-RedisDump的安装
- 【Python3网络爬虫开发实战】1.4.2-MongoDB安装
- 【华为云实战开发】7.Android应用如何在云端快速开发
- 【华为云实战开发】6.Cocos游戏项目如何在云端开发
- ASP.NET Core EF Core+Mysql分层开发项目实战
- Laravel 中使用 swoole 项目实战开发案例二 (后端主动分场景给界面推送消息)
- Windows Store App JavaScript 开发:页面加载
- OSGI开发web应用
- 【IOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入GAMECENTER 指南(实现仿官方的成就提示框)、游戏接入OPENFEINT指南;
- 《iPhone与iPad开发实战—iOS经典应用剖析》连载七
- iPhone与iPad开发实战——精通Object C--视频
- SPRING Thread开发实战
- Android开发学习笔记(十二)Fragment简单介绍
- operator-sdk实战开发K8S CRD自定义资源对象
- spark3.0开发WordCount程序完整代码
- Swing开发之JComboBox篇
- 最新《Android Compose 强化实战》开源,迈入中高级开发的必经之路
- 会员管理小程序实战开发06-生命周期函数及自定义方法介绍
- 会员管理小程序实战开发教程-按条件过滤数据
- android8.0 settings实战开发自定义Preference
- 〖Python 数据库开发实战 - MySQL篇㉞〗- 综合案例 - 新闻管理系统数据库设计的基本属性
- 〖Python 数据库开发实战 - Python与Redis交互篇④〗- 利用 redis-py 实现集合与有序集合的常用指令操作
- 音视频开发大厂面试题(快手、百度、字节)
- 【Python3网络爬虫开发实战】 1.2.2-Selenium的安装
- 【Python3网络爬虫开发实战】 3.2.1-基本用法
- Flutter实战之Android混合开发初探
- 【ChatGLM 开发实战】ChatGLM 定制开发: CUDA 模型指定运行的 GPU 设备
- Packetbeat协议扩展开发教程(2)
- 嵌入式Linux开发之内核rtc时钟配置
- Java开发之——线程面试篇:死锁和如何避免死锁?
- 有哪些关于 Android 开发的博客值得订阅?
- 【uni-app高级实战】手把手带你学习一个纯实战复杂项目的开发2/100
- 会员管理小程序实战开发05-权限设计
- 测试开发进阶之路让你测试3年拿到年薪30W+