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


這節我們繼續上節沒講完的Particle參數。

上節我們講了Emission發射器參數,我們接着往下講Shape:

可以看到這個子模塊的參數是跟形狀有關:

1.Shape:發射形狀。粒子被約束在這個形狀中發射。我們看看效果圖就知道了。就拿這個Cone錐形來看:

可以看見粒子發射總是被約束在這個錐形中。

我們看看總共有幾種形狀:

1.Sphere:球體。粒子被約束在這個球體中發射。

(1.Radius。球體半徑。

(2.Emit from Shell:是否粒子發射是在圓形的表面發射。默認是圓形體內任意位置。

(3.Random Direction:是否是隨機方向。默認是跟形狀相關的從中心向外發散方向,比如球體就是爆炸方向。如果是隨機方向的話,就是胡亂發射。但是他還是被約束在球體里面發射。只不過發射的方向變了而已。

 2.HemiSphere:半球體。粒子被約束在這個半球體內發射。

(1.Radius:半球體的半徑。

(2.Emit from Shell:是否粒子發射是在半球體的表面發射。默認是半球體內任意位置。

(3.Random Direction:跟球體類似。本來是從球體中心發散出去,但是勾選這個之后,就隨機方向發射。

3.Cone:椎體。粒子被約束在這個椎體中發射出去。

(1.Angle:錐形斜面和垂直方向的夾角。如0度就是圓柱。90度就是跟平面類似。

(2.Radius:錐形底面的半徑。

(3.Length:底面和頂面的距離。也就是圓錐的高。這個參數是受第4個參數的影響,如果是從Base(底面)發射,那么Length就沒有用。如果是Volume(體積)發射,那么Length就有用。因為體積肯定和高度有關嘛。

(4.Emit form:從哪里發射:總共有4種:

1.Base:圓錐底面。粒子是從圓錐體的底面的任意位置沿着體積方向發射出去。

2.BaseShell:圓錐底面周長邊。粒子是從圓錐底面的周長邊沿着側表面的方向發射。與Base唯一的區別就是一個是沿體積,一個是沿側面。

3.Volume:體積。粒子是從圓錐體內的任意位置沿着體積的方向發射出去。

4.VolumeShell:體積側面。粒子是從圓錐體的側面的任意位置沿着側面方向發射出去的。

(5.Random Direction:與上面講的隨機類似。

4.Box:長方體。粒子被約束在長方體內發射。

(1.Box X:x方向上的長度。

(2.Box Y: y方向上的長度。

(3.Box Z:z方向上的長度。

默認發射粒子是在長方體內的任意位置沿着z方向(與xy平面垂直)發射。

(4.Random Direction:類似不講了。

5.Mesh:網格。粒子被約束在網格里面發射。

可以看到我這里選擇了一個Plane網格,那么上面的參數Triangle是什么鬼。這個參數是表示粒子在哪里反射。總所周知,網格由頂點,線段,面構成。那么Triangle代表是三角面。

他這里有三個選擇:

1.Vertex:粒子就是從網格的頂點發射出去。

2.Edge:粒子是從網格的邊長發射出去。

3.Triangle:粒子從網格的面發射出去。

OK,經過長篇大幅,終於把Shape這個組件講完了。我們來總結下這個Shape的作用,他主要是約束粒子發射的形狀,比如火焰當然得用Cone錐形,然后夜明珠就得用Sphere球體。

行,我們講下個組件:Velocity over Lifetime 速度受粒子的生命周期影響。

假如說我們將x改成4,那么粒子在x方向的速度是4,那么在粒子的生命周期內,他的x方向速度是4,其他方向速度是0。也就是說他會偏向x方向移動。

同理,y和z方向也是類似的。

那么下面的Space是什么,就是這個x方向的速度是受父類速度影響(Local)還是不受父類影響(World)。我具體研究了下,發現根本沒啥屌用。主要還是看前面的Simulation Space的參數。所以這個參數我們暫時不管他。

我們總結下,這個組件有啥用,主要是根據不同類型粒子改變不同方向上的速度。如下雨,肯定不是直直的下着帶有點傾斜的下着,所以這里改變下方向速度就可以實現。

OK,我們繼續下個組件:Limit Velocity over Lifetime 限制粒子速度

這個組件其實沒啥屌用,就是限制粒子發射速度。

(1.Separate Axis:是否限制3個方向的速度。當我們打鈎之后,會有x,y,z三個方向的速度限制。

(2.Speed:總體限制的速度。

(3.Dampen:速度限制倍數。我發現永遠為1,不懂為什么。

OK,這個組件其實就是為了防止在其他地方修改導致粒子速度過快或者過慢。

進入下個組件:Force over Lifetime 粒子在不同方向受力

這個組件其實就是改變粒子不同方向上的加速度。感覺類似於上面講的兩個組件,這里我不詳細介紹。

主要應用場景很多,比如噴泉,我們在z方向施加往下的力,類似的場景很多,凡是跟重力相關的都可以用上。

 Color over Lifetime:(粒子顏色隨着生命周期的改變而改變)

這個組件是用來改變粒子顏色,但是這個顏色變化是根據粒子的生命周期而變化的,如下如所示:

我在生命中期的顏色改為紅色,可見粒子發射出來的時候在中間位置顏色變成紅色。

Color by Speed:(粒子顏色隨着速度的變化而變化)

這個組件也是用來改變粒子顏色的,只不過這次是根據粒子的實時速度來變化的。

見下圖:

粒子的速度為5,

1.Color:我選擇在速度范圍的中間設置為紅色。

2.Speed Range:速度范圍。這里我選擇0-10,那么粒子的速度落在了范圍的中部,所以整體粒子的顏色改變為紅色。

 

Ok,接下來幾個組件與上面幾乎一致,分別是:

1.Size over Lifetime:(粒子大小隨着生命周期而變化)

2.Size by Speed(粒子大小隨着速度而變化)

3.Rotation over Lifetime(粒子旋轉方向隨着生命周期而變化)

4.Rotation by Speed(粒子旋轉方向隨着速度而變化)

 

External Forces:(這個組價我一直搞不懂,但是幾乎沒怎么用到,先跳過等我研究透了再來寫)

 

接下來:

Collision:(粒子碰撞效果)

這個組件用來處理粒子與其他碰撞器之間的碰撞檢測。

1.Planes Or World(第一個參數是其他碰撞體類型,

(1-Planes)如果是Planes的話,那么規定死了,粒子只能與這些Planes,也就是面碰撞,如上圖,我們可以點擊+按鈕添加Transform面)

(2-Visualization)可視化類型,有分Grid和Solid:

  Grid:(網格,在編輯過程中可以看見具體的碰撞器邊界)

  

  Solid(實體),沒有邊界,但是他的實體就是邊界,沒啥差別。

 (3-Scale Plane)面的縮放大小,也就是碰撞器的縮放大小。

 (4-Dampen)碰撞器表面的摩擦力大小。如果大於0的話,表明粒子碰到碰撞器后速度會減少。

 (5-Bounce)彈力。默認為1,如果為0的話,表示不能反彈,那么就只能沿着碰撞器表面滑行。

 (6-Lifetime Loss)碰撞之后粒子生命周期減少。

 (7-Min Kill Speed)顧名思義。粒子碰撞后如果速度小於這個速度的粒子會銷毀。

 (8-Particle Radius)粒子半徑。

(1-World)如果是World的話,我們可以選擇在世界坐標下所有的碰撞的layer來剔除。在參數中多了個Collides With,這里選擇我們需要的layer。

其他大致參數與上述Planes一致。

 

Sub Emitters:(自粒子發射器)

分為三個階段:

1.Birth(本粒子出生的時候,那么子粒子會跟着本粒子出生)

2.Collision(本粒子碰撞的時候,會產生子粒子)

3.Death(本粒子死亡的時候,會產生子粒子)

這里注意所謂粒子是單個粒子,不是整個Particle System。可能讀者會誤以為整個本體Particle死亡的時候才產生粒子,這里是個誤區,其實是Particle的單個小粒子。

比如我在出生的搞個子粒子。那么每發射一個小粒子,會持續產生子粒子,注意持續。因為我沒有在本體粒子Death處理任何事,也就是說本體粒子沒有消亡之前,一直會產生子粒子。

 

接下來:

Texture Sheet Animation:(序列幀動畫)

這個組件得配合下面的Renderer組件的材質球。因為我們的序列幀圖片是從這里獲取的。

這里我搞了個幀貼圖材質,賦給Renderer組件里面的Material。

OK,我們看下Texture Sheet Animation的參數:

1.Tiles :(這里是UV坐標,其實可以理解為xy分別表示把整張圖切成幾塊,比如x等1,y等2,表示整張圖,x部分整張,y部分被切成兩塊,這樣就表示整張圖被切成上下兩個部分,這樣幀動畫就拿着兩個部分循環替換出現,如果x等2,y等2,那么就整張圖被切成四塊,幀動畫取四塊交替)

2.Animation:(表示去哪個部分做幀動畫)

  (1-Whole Sheet:表示整張圖,根據上面的UV)

  (2-Single Row:單行)比如x=2,y=2就表示兩行,row=0,就交替第一行的圖片,row=1,就交替第二行的圖片。

3.Frame over Time: 在粒子生命周期里面,播放第幾幀的圖片)就拿上面的來講,總共有4幀圖片,那么這里我寫0的話,他會播放第一幀的圖片,寫1的話,播放第二幀的圖片,如果是曲線的話,那么就會在生命周期里面,交替出現不同的幀圖片,也就形成了幀動畫。

4.Cycle:在生命周期內循環播放次數)基本上為1,特殊情況自己搞。

 

接下來的組件是與之息息相關的:

Renderer:(渲染組件,就是渲染粒子的材質球)

1.Renderer Mode:(渲染模式)

  (1-Billboard):渲染出來的粒子永遠朝向攝像機,也就是說攝像機無論在哪個角度,他都是表現材質球的正面。

  (2-Stretched Billboard):渲染出來的粒子可以進行縮放,但是沒有正面朝向攝像機。什么叫正面,就是說他原先發射的粒子什么方向就是什么方向。

  

  調整Scale來拉伸粒子,這三個參數隨便改動那個都行。

  (3-Horizontal Billboard):渲染出來的粒子都是水平朝向。

  (4-Vertical Billboard):渲染出來的粒子都是豎直朝向。

  (5-Mesh):渲染出來的粒子的Mesh。注意這個會和Texture Sheet Animation發生沖突。也就是說規定了粒子的mesh之后就不會有幀動畫產生。

  

Ok,剩下的你們自己去理解,看看名字其實就知道咋用。

 

下節課,我們實戰下,來做個比較好看的整體粒子特效。

 


免責聲明!

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



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