我又来了。首先祝大家新年快乐!
心里默念三次这个时节为了应景,咱们来弄点雪的特效来玩玩。
在游戏中对于火焰、烟雾、魔法等效果可以通过粒子系统(Particle System)来实现。粒子具有动态性,它的大小、速度、颜色可以随着生命周期或者速度改变。本文将通过制作普通下雪粒子、优化飘落细节以及添加刮风效果三个部分,简单介绍几个常用的模块。
1 添加Particle System
(1)Hierarchy窗口右键 > Effects > Particle System
(2)新建一块Plane作为地面,并且把Particle Syetem位置移到Plane上方。
(3)旋转Directional Light,使背景变暗(随意即可),便于观察。
2 设置Shape模块
Shape模块定义粒子发射器的形状,可提供沿着该形状表面法线或随机方向的初始力,并控制粒子的发射位置及方向。设置参数,扩大发射盒体积,粒子将会从发射器内随机发射:
3 设置Particle System Main模块
Particle System Main模块包含影响整个系统的全局属性,大多数这些属性用于控制新创建的粒子的初始状态。
(1)Start Lifetime(生命周期):10,可以理解为粒子的起始“生命值”为10,每秒减1。
(2)Start Speed(初始速度):0,将在其他模块控制它的速度。
(3)Start Size(初始大小):Random Between Two Constants(在两常数间随机) > 0.1 ~ 0.4。
(4)Simulation Space:World,使粒子的运动坐标在世界空间中(不随父对象移动)。
左 Local 右 World4 设置Emission模块
Emission模块中的属性影响粒子系统发射的速率。由于在第2步中增加了发射器的体积,粒子看起来比较稀疏,为了有飘雪的感觉,需要加快发射速率,提高粒子密度。
Rate over Time:100,每秒发射100个粒子。
5 设置Velocity Over Lifetime模块
Velocity Over Lifetime模块控制每个粒子在生命周期内的速度。雪花飘落时会在XZ平面(水平)上随机小幅度移动,而在Y轴的负方向(向下)也会忽快忽慢地下落。设置参数:
效果如下:
6 设置Renderer模块
该模块决定粒子如何被渲染。这是一个常用的模块,本次保持默认即可。
(1) Render Mode:允许在2D Billboard 图形模式和3D Mesh模式之间选择。
Billboard模式适合于标识从任何方向看起来体积大致相投的粒子(例如云)。
(2) Material:用于渲染粒子的材质。创建粒子系统是会使用默认材质,假如有雪花的材质,效果会更上一层楼。
此时,一个普通的下雪粒子特效已经制作完成了,但别着急,还有很大美化的空间,美术的感染力往往在于一些细节。
7 设置Noise模块
制作粒子特效的思路像是做“加法”,不断的添加一些合适的点缀、整体和局部的运动,会让粒子更加逼真。当然也不能加入很多无关的效果,反而会让粒子变得很乱。
对下雪来说,真实的空气中一定有微风,就算没有风也有气流的扰动,所以加入一些噪声扰动,会让统一下落的雪花更真实一些。
使用噪声影响粒子的运动,遵循水平面小幅度随机,下落忽快忽慢的思路,使其更加自然:
(1)Separate Axes(分离轴):勾选后,可以调整每个轴向的影响:
Random Between Two Constants > X(-0.8,0.8),Y(-0.5,0),Z(-0.8,0.8)。
(2)Frenquency(频率):0.5,数值越低变化越平缓。
(3)Scroll Speed(滚动速度):0.5,随着时间滚动噪声图,使粒子移动效果更加动态。
8 设置Collsion模块
除了噪声扰动以外,Unity的粒子系统还支持一种非常强大的功能:让粒子可以像刚体一样发生碰撞。Collsion模块控制粒子如何与场景中的游戏对象碰撞,支持世界碰撞和平面碰撞。
雪花留在地面上的效果非常棒,其实粒子碰撞的性能开销比较大,如果用在实际游戏中,可以看看开启碰撞是否会对帧率有影响。
当需要雪花飘落在地上时,可以勾选此模块。如下设置后,粒子便能停留在地面上:
9 设置Color over Lifetime
雪花飘落在地面上,随着时间慢慢淡化,当生命周期结束时最终消失褪去。
Color over Lifetime模块控制粒子的颜色和透明度在生命周期中的变化。当雪花快消失的时候,调节透明度,使粒子有淡出的消失效果。点击Color属性右侧图标进入Gradient Editor:
操作如图所示:
经过一轮优化之后,雪花不仅飘落的细节更加丰富,而且能够接触场景物体,消失也能自然淡出。
优化完飘落细节后,下雪特效已经有不错的表现,根据具体的使用场景,还有进一步美化的空间。比如有时候游戏需要一个下雪的同时并且刮风的场景,此时可以结合External Forces模块以及Particle System Force Field组件,让雪花飘落的同时接收特定力场的作用。
10 设置External Forces模块
External Forces模块控制影响粒子的风区。
(1) 勾选External Forces模块后,在Hierarcy窗口中添加Particle System Force Field:
(2)设置Particle System Force Field参数:
效果如图:
结语:本文先制作了普通的雪粒子特效,再优化飘落过程的细节,最后为粒子添加力场达到了刮风的效果,通过三个部分简单介绍了粒子系统常用的模块,希望对大家有所启发。
咱们的游戏开发交流群也欢迎强势插入:869551769
希望参与线下游戏开发学习的,欢~~~~~~迎访问:http://www.levelpp.com/