技術概述
如果游戲里有爆炸的要素,那么很可能需要爆炸的粒子特效。調制爆炸粒子特效的幾個關鍵模塊是:Emission、Shape、Texture Sheet Animation、Color over Lifetime、Size over Lifetime、Renderer。
技術描述
效果預覽
效果如上,爆炸分為三個部分:
中間的爆炸燃燒煙霧
周圍濺射的火花
爆炸時的能量沖擊
效果制作
燃燒
該粒子用到的素材
用這個素材創建材質
新建一個Particle System,並把Renderer模塊里的Material設置為剛才新建的材質
基本參數的設置可以參考下面
因為是爆炸,事件持續不需要很長,但有燃燒,所以也不會太短。不需要他去移動,所以速度設置為零。
Emission設置參考如上。Rate over Time設置為零,因為煙霧是瞬間產生的。反而添加一個Burst,來瞬間發射粒子。主要設置Count參數。
Shape主要設置發射空間的形狀,爆炸一般是圓的吧,3D就設置Sphere,2D就設置Circle,圓的半徑視爆炸范圍而定。Radius Thickness設置為0讓它在整個圓里產生粒子。
Texture Sheet Animation是重點。
Mode設置成Grid,Tiles設置成6✖6,因為上面素材的煙霧就是6✖6的。
Start Frame即起始幀設置成第一幀0,Frame over Time設置成從0到35的直線,這樣每個粒子都會播放上面素材的煙霧動畫
濺射粒子
在剛剛的燃燒粒子里創建一個子粒子系統,這個粒子的材質用默認材質就好。基礎參數參考下圖
關鍵在於Start Speed和Start Lifetime,速度相對大一些,起始壽命小一些,適當的增加隨機性。可以設置Gravity Modifier讓濺射的粒子會有受重力下落的效果。
一樣使用Bursts。這里設置了Cycles是為了讓它有“持續”但是”瞬間“的感覺。每間隔0.01秒發射30個粒子,發射5次。在50毫秒里就完成了這5次發射,所以也不明顯,這里根據自己需要設計。
Shape沒什么好說的,圓形就完事了。
隨着時間流逝,濺射的粒子燃燒殆盡。可以在透明里加個漸變。
Renderer里的Render Mode設置成Stretched Billboard,這樣濺射的火花就會在它速度的方向上拉長,更接近真實的視覺效果。
能量沖擊
素材
創建一個新的Particle System作為第一個粒子的子物體,用上面的素材創建材質,並應用到Renderer的Material里
基本參數
Start Lifetime同樣短一些。Start Speed為零,因為我們不希望它移動,只希望它的大小改變,這個在后面設置。Start Size設置一個合理的值,因為后面的設置會受這個影響。
Emission可以自行設置。如果想要有多重沖擊波,建議改Cycles和Interval。如果使用Rate over Time,還要適當修改基本參數里的Duration,讓它不會發射太久。
Shape使用Circle即可。
Color over Lifetime里添加一個漸變消失,可以選喜歡的顏色。
Size over Lifetime設置讓他從小大大,可以直線可以曲線,大小按照自己需求。
總結
以上就是開頭爆炸示例的參數設置,內容覆蓋了Unity粒子系統的基本使用。可以在這個基礎上添加爆炸后的硝煙或者鏡頭晃動。
可能遇到的問題
- 2D項目可能遇到這樣奇怪的情況,Scene視圖里可以看到粒子,但是Game視圖里卻只能看到一部分,有時候還會消失不見。
這是因為,如果在Shape里選擇的是3D發射形狀,粒子具有z軸速度,當粒子沿着z軸移動到攝像機范圍外,或者移動到某些圖層下面的時候就會看不見。
可以選擇2D的發射形狀,或者設置相機的范圍,又或者設置Renderer里的Sorting Layer或者Sorting In Layer,又或者在Limit Velocity over Lifetime里限制粒子的z速度。
- Color over Lifetime不起作用
在這個粒子系統使用的材質里,去掉Emission的選項。
參考資料
[Unity 活動]-社區直播|幾種粒子效果的制作教學 Getting started with Particle Systems