UNITY粒子详解及速度相关设定
之前我写过一个unity粒子系统的使用介绍文档,今天来在原来基础上补充点fb上看到台湾友人Kencoder CodeLab写的内容
旧的文档部分(我不补图了):
主面板ParticleSystem:
- Duration:粒子发射周期,可以简单的理解为粒子发射持续时间。
- Looping:粒子按照周期循环发射。
- Prewarm:预热系统,比如说我有一个空间大小的粒子系统,但是粒子发射速度有限,我想在最开始的时候让粒子充满空间,此时就应该勾选Prewarm。
- StartDelay:粒子延时发射,勾选后,延长一段时间才开始发射。
- StartLifeTime:粒子从发生到消失的时间长短。
- StartSpeed:粒子初始发生时候的速度。
- 3DStartSize:这个属性是当你需要把粒子在某一个方向上扩大的时候使用。
- StartSize:粒子初始的大小。
- 3DStartRotation:需要在一个方向旋转了子的时候可以使用。
- StartRotation:粒子初始旋转。
- RandomizeRotation:随机旋转粒子方向,感觉在3D粒子的情况下,尤其是圆形的没什么用。
- StartColor:粒子初始颜色,可以调整加上渐变色。
- GravityModifier:重力修正。
- SimulationSpace:
Local 此时粒子会跟随父级物体移动。
World,此时粒子不会跟随父级移动。
Custom,粒子会跟着指定的物体移动,发射器本身不受影响
- SimulationSpeed:根据Update模拟的速度。
- DeltaTime:一般的DeltaTime都是1,这里说的受世界的影响指的是游戏里面通过程序
Sacled:是在游戏需要暂停的时候,根据TimeManager来定,受到时间的影响
UnScale:忽略时间的影响。
- ScalingMode:Local:粒子系统的缩放和自己Transform的一样会忽略父级的缩放。Hierarchy:粒子缩放跟随父级。Shape:将粒子系统跟随初始位置,但是不会影响粒子系统的大小。
- EmitterVelocity: 发射器速率 这里指的是和程序有关的transform.translate he rigidboady.velocity两种方法
Transform
Rigidbody
- MaxParticles:粒子系统可以同时存在的最大粒子数量。如果粒子书数量超过最大值粒子系统会销毁一部分粒子。
- AutonRandomSeed:随机种子,如果勾选会生成完全不同不重复的粒子效果,如果勾选即为可重复。
- Stop Action 停止活动时 。
Disable 无效;
Destroy 摧毁
Callback 回调。脚本可用于获取
5.6vs2018新功能特效
一、基本选项
主要差异增加
1、Delta Time 一般的DeltaTime都是1,这里说的受世界的影响指的是游戏里面通过程序
2、Emitter Verlocity 发射器速率
经过一番暴力测试,发现这两个选项貌似没什么用,官方也没用更新api说明,所以我们可以暂时无视他们。
二、Shape
1、增加Rectangle 矩形,
2、增加Textrue贴图选项
3、增加scale选项
主要为这3大块
三、Velocity over Lifetime
改动巨大,之前通过额外的脚本实现。
1、Linear 线性移动,在原有速度基础上进行xyz方向上的便宜,有点像风的感觉。
2、Orbital 轨道 绕着xyz轴旋转
3、Offset 偏移值 radial 半径
4、Speed Modifier 速度修改
四、Limit Velocity over Lifetime
Drag 拖力
五、Noise
Position Amount 位置影响值
Rotation Amount 旋转影响值
Size Amount 大小影响值
增加了更大的随机性
六、Trails
增加条带模式Ribbon,原模式为粒子模式。大体参数差不多。
七、Render
增加masking遮罩,可以折叠内外面的显示,并不实用。
补图部分

這次會研究一下Unity粒子特效中的速度設定;同一組粒子特效,不同速度會帶來不同感覺;所以調整這設定時,通常比較花時間;內文會分享有那些不同設定和不同速度有什麼效果;
內容大剛
速度在特效中的角色
Unity中速度相關的設定
粒子開始速度 (Start Speed)
放大縮小速度
重力 (Gravity Modifier)
模擬速度 (Simulation Speed)
運行速度設定 (Velocity Over Lifetime)
運行減速設定 (Limit Velocity Over Lifetime)
外力設定 (Force Over Lifetime)
旋轉速度 (Rotation Over Lifetime)
速度在特效中的角色
表達動感:快速,緩慢;例如火粒子很快,下雪的粒子很慢
表達打擊感:強打擊=快速,弱打擊=慢
表達遊戲信息:例如: 賽車的車輪的塵埃和火花很多很快,就代表車跑得很快;
製造動態:配合使用不同的速度設定,可以創造不同的動態效果,例如:煙花、螺旋等
所以,在特效基礎形狀完成好,很多時間花在調整速度和時間;
示範:
Unity中速度相關的設定
Main Module
Start Speed : 粒子開始速度
Size over Lifetime: 放大縮小速度
Simulation Speed: 模擬速度
Gravity Modifier: 重力
Velocity Over LifeTime: 運行速度設定
Limit Velocity Over LifeTime: 運行減速設定
Force over LifeTime: 外力設定,其實也是加減速設定
Rotation over LifeTime: 旋轉速度
粒子開始速度 (Start Speed)
這個是最基本的設定,就是粒子生成時候的速度,其實只這個設定,已經很製作很多很炫的特效;
而且這個設定,提供了4類設定Value的方法:
Constant : 所以粒子同一一個速度
Random : 粒子使用隨機速度
Curve : 粒子速度基於時段變化
Random Curve : 粒子速度基於時段變化,而去定義範圍的隨機值

放大縮小速度
除了基本的Start Speed,如果把Size over Lifetime設定為漸大或漸小;
修改 LifeTime 或 Size也會製作速度變化;
先了解一下 — 速度的公式:速度(Speed) = 距離(Distance) / 時間(Time)
如果用粒子的術語的話: 速度(Speed) = 大小(Size) / 壽命(LifeTime)
假如Size固定:LifeTime越小,變化速度也快;
假如LifeTime固定:Size越大,變化速度也快

重力 (Gravity Modifier)
粒子重力設定,例如落葉,落雨效果;不過也可以用與一些煙霧(上升)效果;
重力 = 0:粒子沒有受重力影響
重力 > 0:可以把粒子拉向下
重力 < 0:可以把粒子上升

模擬速度 (Simulation Speed)
模擬速度很簡單,把整體特效加速或減速;
由於粒子系統有很多不同設定,如果直接修改速度設定的話,可能會影響了整體設定;所以,使用這個設定的話,可以不用擔心整體效果受影響了

運行速度設定 (Velocity Over LifeTime)
運行速度設定是粒子生成後的速度參數,Unity提供了以下幾類的設定:
Linear – 線性速度
Orbital – 軌跡速度
Radial – 放射速度
線性速度 (Linear)
線性速度就是定義粒子在X、Y、Z軸的附加速度;當Start Speed設定為0的時候,粒子會基於這個速度設定來運行,但是如Start Speed不是0,粒子速度會是兩者總和的速度;
示範1: 沒有其他速度參數影響

示範2: 同時使用Velocity Over LifeTime和Start Speed

軌跡速度
軌跡速度就是定義粒子以粒子發射器的X、Y、Z軸為中心旋轉的速度;


如果不希望以粒子發射器為中心的話,可以使用offset來調整

放射速度
放射速度就是定義粒子前往/離開中心點的速度;中心點只粒子發射器的位置;
如速度 > 0 : 粒子向外
如速度 < 0 : 粒子向內

也是一樣,如果希望用其他中心點,可以使用offset來調整;
備註:使用Shape = Sphere / Circle 配合Start Speed也能做到類似上面示範的效果;
運行減速設定
運行減速設定就是在粒子運行時,有多少阻力;Unity粒子系統提供了兩類減速方法: Dampen 和 Drag;
Dampen 和 Drag都是相同的粒子減速,但是他們提供不同的條件;
Dampen: 提供Speed參數來控制是否需要減速,而粒子大小不受影響;
Drag: 減速的參數,會受粒子大小/速度影響;不過也可以控制選擇是大小還是速度影響;
使用Dampen的效果:

Dampen和Drag的比較:

外力設定
和重力很像,可以控制粒子加速和減速,不過可以定義不同軸的外力;

旋轉速度
控制粒子旋轉的速度;這個設定,在很多情況下也很有用,下面有一些例子;

旋轉特效的MESH
飄雪

落葉

調整這個設定時,需要調配合適的速度,例如大風時,落葉要轉快不轉慢;
總結
Unity粒子系統提供了很多速度參數可以使用,可以讓我們模擬很多不同的情況,或製作不同的動態;但是怎樣調整速度的值,我自己還未整理到很好的方法;不過有一些資源可給大家參考。
Artistic Principles of VFX #5: Timing
https://youtu.be/WLMVpcK0WvAPixar in a box: Graphing motion over time
https://www.khanacademy.org/partner-content/pixar/effects/particle-physics/v/fx6-finehttps://kendevlog.wordpress.com/2019/10/15/unity-particle-speed/?fbclid=IwAR1do_tLmPigq0OnLHR-U2tHjhBBN2FrWyEkF7kmXXdV3DkF3RJgeE68gDQ