1. 程式人生 > >[轉載]使用粒子實現Logo消融效果

[轉載]使用粒子實現Logo消融效果

轉載自unity 官方中文論壇  點選這裡檢視原文

本文將由遊戲開發者Mirza分享使用Unity的預設Shuriken粒子系統,在不使用外掛或編寫指令碼的情況下,實現Logo消融效果。

 

 

這是一個Unity中執行的實時效果,你可以使用任意圖片實現該效果,無論圖片是否是彩色的。本教程將使用純白色紋理來製作,根據該紋理調整設定,你可以改變部分粒子顏色,使其更符合自己使用的圖片。

Part 1:Logo淡入淡出效果
我們首先處理粒子系統,實現整個Logo圖片的淡入和淡出效果。
 



建立一個新材質,將Logo貼圖賦予此材質。將其設定為使用Particles/Alpha Blended著色器。
 



我們需要確保紋理擁有讀寫許可權。如果沒有的話,基於紋理的粒子發射效果將只在編輯器中可用,無法在遊戲中實現。
 



建立一個新的粒子系統。每次建立時,請重置Transform屬性,這樣遊戲物件不會出現平移或旋轉,除非打算使其以某種方式移動和旋轉。
 



開啟Renderer模組,並將粒子材質設定為剛剛建立的材質。如果想提高亮度,並且正使用著後期處理的泛光效果,我們可以將顏色調為純白色,並將Alpha調到最大。

如下圖對材質Tint Color進行的處理,將Render Alignment設為Local。我們不會讓Logo的基礎紋理粒子面向攝像機,這樣能確保粒子面向本地變換的方向。
 



我們只打算髮射一個粒子,所以檢視Emission模組並按照下圖進行設定。
 



現在我們可以進行Main模組設定。我們不需要迴圈播放該效果中的任何粒子系統,所以取消勾選Looping屬性來禁用迴圈過程。

為了能通過指令碼輕鬆地調整模擬時間,我們將Start Lifetime設為1。如果你不打算處理該數值,應該將它設為更合適的值。你可以將其設為較大數值,使觀看者有足夠時間看到Logo,再讓Logo爆炸為精美的粒子。

如果我們不使用正方形紋理,則可能需要啟用3D Start Size並處理引數。我們發射的是2D粒子,所以只要處理X和Y值。影象解析度為1024*512,寬高比為2:1,所以將X值設為2,Y值設為1,使它匹配寬高比,避免使圖片變形。

我們還降低了Start Color的Alpha值,因為使用後期處理設定的泛光效果時,影象的亮度會過高。
 



現在,我們需要使用Color over Lifetime模組來設定Alpha動畫。下圖是處理Logo淡入和淡出效果的設定。

Alpha淡入時間為總時間的25%,從25%~75%的時間顯示Logo,然後再完全淡出。因為我們將該粒子持續時間設為1,所以分別設定的時間為0.25和0.75。
 



Part 2:Logo爆裂效果
在這一部分,我們將使用的粒子系統製作Logo分散的爆裂效果。
 



首先建立新粒子系統。我們有三種方法可以選擇:
1、為點精靈圖片建立簡單的粒子紋理,將其指定給附加材質。
2、使用Ultimate VFX資源的點材質。
3、使用Inferno VFX中的附加發光球體材質。

這三種方法均可用於本文教程,Ultimate VFX 和Inferno VFX都是由本文作者Mirza所創作,如果你不想自己製作紋理和材質,也不打算付費購買資源,可以下載免費的Inferno VFX。

開啟新建粒子系統的Renderer模組並設定材質,不必修改其它設定。
 



請按照下面的內容設定Main模組和Emission模組。

Start Delay會按指定時間推遲發射過程,以秒為單位。我們希望該效果在Logo淡出時發生,也就是從前面粒子系統的透明動畫開始,即整個過程的第0.75秒。

這些粒子會很小,因此我們將Start Size設為單位大小的1/8,即0.125。粒子不用太亮,所以需要大幅降低Start Colour的Alpha值。

因為會有大量微小粒子,我們需要將Max Particles設為10,000,並將Emission模組中Bursts屬性的Count數值也設為10,000。
 



現在讓這些粒子從Logo紋理的形狀發射出來,請按下面內容設定。

將Shape設為Box,指定Logo圖片到Texture欄位。如果想讓粒子繼承Logo的顏色,請勾選Color affects Particles。

類似之前的粒子系統Start Size設定,我們調整了發射器邊界,通過設定Scale為[2, 1, 0],使其匹配圖片的寬高比。Z值為0,因為希望讓發射器在平面上發射。
 



此時,當粒子在Start Delay後發射時,我們會看到類似下圖的效果。現在有了在紋理形狀發射的基礎,我們可以實現任何想要的效果。
 




現在處理分散的文字。啟用Velocity over Lifetime模組。

點選該屬性最右側箭頭設定Linear屬性,選擇Random Between Two Curves。指定相似曲線到所有軸,範圍從-1~1。曲線會隨時間慢慢增強分散效果,而不是立即分散,因此它能更好地融合前面的粒子系統,並提供過渡轉變為噪聲分散粒子系統。

為方便起見,這裡使用了Speed Modifer來調整數值,但是為每個軸直接設定數值會更好,這樣粒子系統可以自動剔除。本示例是一個Logo動畫效果,所以這樣處理意義不大。
 



最後,按下圖啟用並編輯Color over Lifetime模組和Size over Lifetime模組。
 



Part 3:Logo噪聲分散效果
接下來,我們將會製作第一個噪聲分散效果,如下圖所示。該效果需要一個新的粒子系統,我們可以將剛製作好的粒子系統複製過來,因為許多設定是相同的。
 



我們需要修改部分設定,在Main模組和Emission模組中有一些區別。

Start Delay和Start Lifetime的數值會在1到2秒之間隨機選取,Start Size較小,Max Particles設為20000,Burst中的Count值也設為20000。為了隨機選取Start Lifetime數值,點選下拉箭頭,選擇Random Between Two Constants。
 



Color over Lifetime模組也有不同。
 



引入噪聲後,就變得有趣了,現在啟用Noise模組,按下面內容進行設定。

我們將Strength改為使用曲線,這樣粒子不會立即以噪聲方式分散,從而更好地與其它效果融合。右鍵點選曲線的控制點,選擇Edit Key… 來直接控制並編輯點在檢視上的位置,使用Broken切線模式允許你修改左邊或右邊的切線,而不改變另一側的曲線。

通過使用這二個方法,我們將控制點設在0.25s,該點左邊為直線,右邊為曲線。得到的結果是0.25s前不使用噪聲,之後會突然上升為1。

頻率為1.5時效果看起來不錯,它能控制“混亂”等級,因為粒子由漸變場操控。Scroll Speed設為1會使噪聲在粒子生命週期生成動畫。

我們使用了大量粒子,如果將Quality設為Medium (2D)會加速模擬效果,且不會與最終效果有太大區別。
 



我們將Render Mode改為Stretched Billboard,設定Speed Scale為0.1,Length Scale設為1,這樣會稍微根據當前的移動速度和方向拉伸粒子,產生近似運動模糊的效果。
 



其它設定可以保留原樣,因為我們重用了之前粒子系統的設定。

Part 4:Logo噪聲分散2
複製我們剛剛製作的粒子系統,開始製作最後一個粒子系統,它或許是該效果中最精美的部分。
 



我們需要修改Main模組和Emission模組中的部分設定。

Duration設為0.75。這是因為這裡不會在一次爆炸中發射粒子,而是會使用Rate over Time。我們還修改了Start Delay和Start Lifetime數值,並提高了Start Color的Alpha值。
 



按下圖設定Color over Lifetime模組和Size over Lifetime模組。讓粒子從藍色變為桔紅色,每個粒子的大小會快速增大然後緩慢減小。
 



最後,修改Noise模組的設定,將Strength和Frequency設為1。你可以將Quality改為Medium (2D)。
 



Part 5:組合所有效果
到這裡就差不多完成了,讓我們重新看一遍已經制作做好的獨立粒子系統,然後將所有效果結合成一個可播放物件。


我們可以將這些粒子系統命名並分組為另一個粒子系統,將所有模組禁用,這樣它們會在你選擇其中任一物件時一起播放。如果禁用Looping並設定Stop Action為Destroy,可以將其用作可例項化效果,它會在Duration時間(以秒為單位)結束後自毀。
 



本文到此結束,結合所有粒子系統後,精美Logo消融效果就製作完成了,最後的效果如下圖所示。

小結
使用粒子實現Logo消融效果,你學會了嗎?是不是製作特效非常簡單。更多Unity教程盡在Unity官方中文論壇(UnityChina.cn) !