unity粒子系统

220 阅读5分钟

一、前言

游戏中很多炫酷效果的背后都离不开粒子系统,比如击中、爆炸、火焰、崩塌、喷射、烟雾等等。Unity为我们提供了强大的粒子系统,模块化的设计,上百个参数供我们调节使用,足以创造出非常震撼的效果了,本篇我们就来讲讲Unit的粒子系统Particle System。本篇为第一篇,主要讲解Unity的粒子系统方案选择、粒子系统的结构、概述、模块介绍等内容

注意:如果需要做更精致的粒子效果,我们需要结合更好的素材+Shader+Api脚本构成更好的效果

1.粒子系统模块概述

(模块与模块的组合,粒子与粒子之间的组合形成粒子系统效果) image.png

2.粒子材质丢失怎么解决

由于Unity版本问题,有的版本创建粒子时,并不会将默认粒子材质赋予粒子,这就导致粒子看起来是紫色的,解决办法也很简单,控制粒子材质的模块是Renderer,我们会在第四篇讲述,如果材质丢失了这里可以先提前设置一下

指定粒子系统的默认材质就可以了。 image.png

二、粒子系统模块介绍

1.主模块

作用:主要是控制粒子的初始状态和全局属性的。

参考图:

image.png

参数介绍

Duration

粒子系统运行的时间长度(秒)

Looping

若启用此属性,系统将重复播放粒子,也就是开启循环模式(无论是Scene窗口还是运行时)

Prewarm

若启用此属性,则粒子系统会在播放前进行预加载,比如漫天星河有3000颗粒子,但按照粒子发射速率,估计要好多秒,勾选此项,一旦播放就会达到预设置的Max Particles(下面有这个属性的介绍),实际开发中比如玩家传送到某一个场景中,周围的粒子效果肯定是需要提前预加载好的,玩家传送之后就要展示效果,勾选预加载就能实现这种效果。

Start Delay

粒子系统发射前将延迟播放一段时间(秒)

Start Lifetime

每个粒子的初始生命周期(秒),指粒子被创建出来到自动销毁的这段时间

Start Speed

每个粒子的初始速度

3D Start Size

若要分别控制每个轴的大小,请启用该属性

Start Size

每个粒子的初始大小(后期都是可以改的),按照给定值等比缩放,若要单独控制三个轴请启用3D Start Size

3D Start Rotation

若要分别控制每个轴的旋转角度,请启用该属性

Start Rotation

每个粒子的初始旋转角度,按照给定值等比缩放,若要单独控制三个轴请启用3D Start Rotation

Flip Rotation

使一些粒子以相反的方向旋转,相反的方向旋转的粒子个数取决于你设置的数值大小,数值在0-1之间,数值越大,翻转越多

这里不要懵,这个属性和上一个Start Rotation是一对,如果上一个属性有值,比如45,那么下面这个属性就是让一些粒子反转度数为-45,如果这里的值是0.1,那就是让10%的粒子反转,如果值为1,则是全部反转

Start Color

每个粒子的初始颜色

Gravity Modifier

缩放物理系统的重力值,值为零会关闭重力,想要让粒子受到物理系统的重力影响,将值设为1即可

Simulation Space

当前粒子系统的参照坐标,一共三个选项,世界、局部、自定义

自定义坐标可选择一个物体,将参照这个物体的坐标作为参照

Simulation Speed

调整粒子系统的更新速度,比较常用

把粒子特效比作一个视频,值为0.3就是按照0.3倍速播放,值为1则是原速播放

Delta Time

在 Scaled 和 Unscaled 之间进行选择,同时值可以在代码中进行设置,其中的 Scaled 使用 Time Scale 值,而 Unscaled 将忽略该值。

Scaling Mode

选择如何使用transform中的缩放 1.Hierarchy 粒子跟随父级进行缩放 2.Local 忽略父级缩放 3.Shape 整体缩放是按照当前粒子的发射Shape来缩放的,且不影响粒子本身缩放,选Local则会影响粒子本身缩放,这里缩放了整体,但粒子本身并没有变扁

Play On Awake

若启用该属性,则粒子被创建时就开始播放

Emitter Velocity

发射器速率,使用哪种组件方法来计算速度(.translate .velocity) Rigidbody Transform

Max Particles

系统同时允许的最多粒子数,如果到达该值,则移除生命周期最长的粒子(活得最久的)

Auto Random Seed

若启用该属性,则每次初始化发射粒子,粒子各自位置不一样。也就是随机。

Random Seed

若禁用Auto Random Seed,则该值生效,该值用于创建唯一的可重复的粒子效果。

比如拿到我的世界随机种子,就可以生成一个一模一样的世界,该值如果不变,则粒子初始位置永远一致

Stop Action

当所有粒子的生命周期都结束时,系统自动执行下列某个操作 1.Disable 禁用当前对象 2.Destroy 销毁当前对象 3.CallBack 将 OnParticleSystemStopped 回调函数发送给附加到游戏对象的任何脚本 注:若Looping处于激活状态,则该属性不生效(因为你都循环了,我就没法结束了)

Culling Mode

当粒子特效不在摄像机范围内时是否暂停粒子系统模拟 1.Automatic 自动模式(如果是单次播放则不暂停,如果是循环(Looping)播放则暂停模拟) 2.Pause And Catch-up 暂停但是没有完全暂停(暂停模拟,但当再次注视时则演算出它应该在的位置) 3.Pause 暂停模拟 4.Always Simulate 总是模拟

Ring Buffer Mode

粒子不会在它们的生命周期结束时死亡,而是会一直存活到最大粒子缓冲区(Max Particles)满,届时新的粒子将取代旧的粒子。 1.Disabled 禁用该模式 2.Pause Until Replaced 暂停直到替换 3.Loop Until Replaced 循环直到替换

参考文档: blog.csdn.net/weixin_4314…