Unity3d-Particle System系統的學習(一)


最近看了下Unity3d的粒子系統的相關視頻,並且動手操作了下,感覺自己的美工技能又增進了下(開個小玩笑),發現粒子系統所需要記憶的東西還是有點多的。

所以為了不讓自己遺忘某些知識點,我准備發布成博客,以便以后能夠查閱回憶。

OK,廢話不多說,馬上進入Particle System,相對程序員來說的噩夢:

我們先來看看Particle System在Inspector視窗中的屬性:

可見,粒子總共有個Transform組件和Particle System組件。

1.Transform:可以控制粒子在世界或者本地坐標的改變。但是有點注意的是,如果你改變Scale屬性值是不會影響粒子的大小縮放的。所以我們想改變粒子大小不能這么改。

2.Particle System:改變粒子的屬性,比如大小,發射速度等等。這個也是我們制作粒子的核心組件。

OK,來看看這些屬性值的作用。

我們先在Scene中創建一個新的Particle System,然后到Inspector視窗中。

1.我們先來學下他的基本屬性:

(1)Duration:粒子持續的時間,什么意思?就是你發射器發送粒子持續的時間。可能還有些繞,舉個例子,比如你打火機打開,點個煙。從打開到熄滅火這個過程火焰持續在燃燒,那么這個時間段就是Duration。再舉個例子,你煤氣在燒兩壺水,一個燒水10分鍾,一個燒水5分鍾。那么煤氣灶是粒子發射器,火焰是粒子,10分鍾和5分鍾就是持續時間。

我們做個小實驗,我們把loop勾去掉,因為這個會影響Duration,如果是loop循環發射那么Duration就為無窮大,沒有意義。把Duration改成5和1分別試下。

5秒:

可以看到5秒之后呢,粒子就不再發射了。

1:

可以看到1秒之后,粒子就不再發射。

(2)Looping:循環發射粒子。我們打鈎之后,粒子發射器就會不斷的持續的發射粒子,不管你的Duration調成多少,他都是一成不變的管自己發射。

(3)Prewarm:預熱粒子發射。什么意思,當我們開始發射粒子的時候,是不是粒子數量從0開始,然后才慢慢增多,可看到上面額gif。但是當我們勾選這個,他就會在我們點擊發射的時候,他不是從數量0開始,而是像已經發射一個周期一樣。(注意他只是在Looping打鈎的情況下才能使用)

可以看到我一點發射,他數量就已經是發送一個周期的數量。

(4)Start Delay:延遲多長時間開始發射粒子。也就是說我們點擊開始發射,他會暫停這么多時間后,然后才開始發射粒子。

(5)Start Lifetime:開始粒子的生命周期。這個值就是單個粒子的生命周期。就像我們人類的壽命一樣,比如有個人的壽命80,過了80年,他就從世界上消失了。那么如果一個粒子的開始生命周期是5秒,那么這個粒子發射到Unity3d的World中,過了5秒之后,這個粒子就消亡了,道理是一樣的。

那么我們想讓不同的粒子有着不同的生命周期,那么怎么弄?放心,在unity中我們生命周期的值是可以設置隨機不同的值。具體看下Inspector視窗中的屬性:

可以看到他支持4中不同類型的值:

(1.Constant:常量。也就是每個生命周期都一樣。

(2.Curve:曲線。

舉個例子,假如我Duration是3秒,生命周期鑰匙曲線值,那么我弄得曲線是如圖。

那么這個曲線是什么意思呢,縱坐標表示生命周期的值,橫坐標表示Duration的值。

假如我們在點(0.5,4)做文章,也就是說在一個粒子在粒子發射器已經持續發射0.5秒后發射出來,那么他對應的生命周期就是是4秒,所以越往后面發射生命周期越小,消亡越快。

(3.Random Between Two Constants:隨機在兩個常量之間。也就說粒子生命周期定在這兩個常量中間。比如我定的兩個常量是1,10。那么粒子生命周期可能是1,可能是3,可能是10,反正不會超過或者小於兩個值。

(4.Randow Between Two Curves:隨機在兩條曲線之間。

這個也是類似的,但是取值就是兩條曲線之間的取值,比如我在圖中已經畫出了一條直線,如果Duration剛好是圖中直線的x坐標值,那么這條直線和兩條曲線相交的兩個值,那么這個生命周期就會隨機從這兩個中取一個。

OK,終於講完了取值。接着我們看。

(6)Start Speed:開始速度。粒子出生具有的速度,這個值也是可以有4中類型的,因為有些粒子速度快點,有些慢點。

(7)Start Size:開始大小。粒子出生具有的大小。跟速度一樣,也是4種類型的。

(8)Start Rotation:開始旋轉方向。粒子出生具有的旋轉方向。也是4種類型的值。

(9)Start Color:開始顏色值。粒子出生具有的顏色。

在第二種我這里講下,這個是顏色漸變值,什么意思?當我們選擇Gradient漸變的模式時:

會出現這編輯器,那么怎么制作呢?很簡單,我們只要在空白雙擊就會出現指標,然后不同的指標改變不同的顏色,那么怎么會有上下浮標。

這里上面是Alpha的值,下面是Color的值。

修改完顏色之后,我們來看看效果。

可以看到顏色先是紅色,再是紫色,然后藍色,最后白色,是不是我們上面調的顏色順序,也就是說他是根據Duration然后改變不同的顏色。

(9)Gravity Multiplier:受重力影響的值。也就是說這個值越大,那么受到重力越大。我們做個小實驗,我們修改Start Speed大一點,為10,然后修改這個值為2。發射粒子:

可以看到發射出去的粒子都受到重力影響往下落。

(10)Inherit Velocity:繼承速度。也就是說這個值是影響粒子受到發射器速度的影響。一般來說我們這個值是設為0.這里參數我們不管,因為我也不怎么懂。=_=!

(11)Simulation Space:發射坐標。什么意思?這里有兩個參數可供選擇。第一個是Local(默認),第二個是World,這兩個有什么區別呢?

區別還是蠻大的,首先我們知道粒子是從粒子發射器里面發射出來的,但是粒子發射出來后是屬於粒子發射器還是世界的?這里如果是Local的話,也就是說粒子還是屬於本地粒子發射器的,粒子發射出來后,粒子發射器在哪里粒子就在哪里。

但是World就截然不同,它表示發射出來的粒子是屬於世界的,已經不是屬於粒子發射器的,所以當你移動粒子發射器,已經發射的粒子還是留在原地。

我們來看下實驗結果:

(12)PlayOnAwake:是否在激活就播放。

(13)Max Particles:最多粒子數。就是一個duration內發射粒子最多數量。如果是1的話,一個duration只發射1.

 OK,講完基礎屬性,我們接着講各個比較重要的屬性:

發射器相關的屬性,可以看到第一個屬性Rate:

1.Rate:每秒發射多少粒子(簡稱發射速率)。什么意思,比如你的Duration是5秒,Max Particles是50的話,你Rate為10,那么就是每秒發射10個粒子,5秒就發射50個。但是現在如果把Rate改成50的話,那么一秒一次性發射50個粒子,也就是說把所有的發射完了,那么就下來的4秒就沒有粒子可以發射了。

2.Bursts:粒子集。可以看到粒子集右邊有個+號的按鈕,我們點擊就會出現Time和Particles的參數選擇。

那么這兩個參數是干嘛用的,其實就是在0.00時刻,發射30個粒子,結合上圖顯示的參數。

我們還可以點擊+號繼續添加不同時刻發射不同數量的粒子。比如我繼續添加在4.00時刻發射30粒子。

這里注意下,這個Time時刻是不能超過Duration持續時間,不然的話是沒有效果的,還有發射粒子的總數和不能超過Max Particles,不然的話發射總數還是Max Particles,只不過超過的部分自動被截斷了。還有得吧Rate改成0,因為沒有速率可言。

然后觀察下效果:

 

 

可以看到在0.00時刻發射30個,在4.00時刻發射20,為什么因為Max Particles才50,面前已經30,所以最后50-30=20個。

OK,我們看下個模塊,感覺篇幅有點多,我們下節繼續。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM