天天看點

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

一、屬性介紹

1、主面闆Particle System

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)
(1)Duration:粒子發射周期

圖中,5.00即在發射5秒後進入下一個粒子發射周期。若沒有勾選Looping,則5秒後粒子會停止發射。

(2)Looping:粒子按照周期循環發射

讓粒子發射時間循環起來,一直發射粒子。

(3)Prewarm:預熱系統

開始播放粒子是已經發射了一段時間的,隻在Looping循環時才有效。

(4)Start Delay:粒子延時發射

粒子系統建立後隔多久後才開始發射粒子。如果有Prewarm則沒法設定延時。0就是不延時;若為5,則5秒後才開始發射。

(5)Start Lifetime:粒子從發生到消失的時間長短
(6)Start Speed:粒子初始發生時候的速度

一般選擇兩個值之間,點選後面的倒三角,選擇Random Between Two Constants。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

Constant(常量):固定的值,不會變化。

Curve(曲線):用曲線代表Duration時間内的變化。豎軸是這個值的變化,橫軸是Duration時間。但注意的是初始的值,出生時的不同,一旦出生了,是其他值控制。

Random Between Two Constants(随機在兩個常量間變化):随機值。

Random Between Two Curves(随機在兩個曲線間變化):随機曲線。

(7)3D Start Size:3D粒子初始大小

可以讓粒子在X、Y、Z三個軸上有不同的尺寸。當粒子是billboard模式時,Z軸調節無意義。

(8)Start Size:粒子初始大小

總體設定初始的尺寸。X、Y、Z三個軸同步大小,機關是米。

(9)3D Start Rotation:3D粒子初始旋轉

粒子可以繞着X、Y、Z三個軸設定不同的角度。

(10)Start Rotation:粒子初始旋轉

預設是隻設定z軸方向旋轉角度,值是角度。

(11)Flip Rotation:反跳旋轉

主要針對設定的Start Rotation值進行反方向的變化。假如旋轉是10。這個值設定為1,就會變成-10。設為0.5就會變成一個從-10~10的随機。

(12)Start Color:粒子初始顔色

顔色上經常有這幾個變換:

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

Color(顔色):設定一個顔色。

Gradient(漸變):可以設定一個漸變色。從左到右是Duration時間。

Random Between Two Colors(随機在兩個顔色變化):随機顔色。

Random Between Two Gradients(随機在兩個漸變變化):随機漸變。

Random Color(随機顔色):它跟Random Between Two Colors最大的不同是可以控制随機顔色的數量。

(13)Gravity Modifier:重力修正器

粒子施加一個向下的力。負值是向上的。注意這個值是一個外部的力,它不随粒子系統縮放而改變。

(14)Simulation Space:模拟空間

就是使用的空間坐标。粒子的運動所使用的空間坐标。

Local(自身): 使用自身粒子系統的遊戲物體的坐标。

World(世界):使用世界坐标,就是場景坐标。

Custom(制定):使用另一個物體的坐标。當這個物體坐标變化時,粒子也會跟着變化,比如物體的位移會帶動粒子位移。

(15)Simulation Speed:模拟速度

整體改變粒子的運動快慢,注意不隻是粒子的速度,而是粒子總體屬性在空間位置中的變化,整體放慢或加快。

(16)DeltaTime:變量時間

Delta Time是一個函數。确切意思是上一幀的時間情況。因為裝置重新整理率的不同,是以一幀消耗的時間也是不一樣的。這個Scaled是調節使用時間變化而非幀的變化。每幀走1米和每0.1秒走一米是不一樣的。預設是Scaled(縮放的)是正确的。

(17)Scaling Mode:縮放模式

縮放粒子系統時的狀況。

Hierarchy(階層):預設值。

Local(自身):效果上是和Hierarchy一樣,如果粒子系統縮放,粒子的運動距離和大小同時被縮放。Gravity Modifier的力不會被縮放。

Shape(形狀):隻會縮放發射器的大小。

(18)Play On Awake:喚醒就播放

勾掉時,運作時出現粒子系統并不會播放,直到在程式中勾上這個勾才會播放,便于程式控制。

(19)Emitter Velocity:發射速率

是關于粒子移動方式。

(20)Max Particles:最大粒子數

為了節省開支設定粒子數量的上限。

(21)Auto Random Seed:自動随機種子

粒子呈現的狀态是由seed種子決定的,相同的seed産生的結果相同。而seed數十分龐大,如果用了随機種子,可能永遠不會碰到數值一樣、粒子狀态一樣的情況。

(22)Stop Action:停止行動

當粒子系統發射完了所有粒子之後的程式的處理方式,跟消耗有關。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

None:無處理,記憶體被動釋放。

Disable:禁用,就是被廢棄狀态,不會再出現,但是還在記憶體中。

Destroy:被摧毀掉,記憶體會直接釋放掉。

Callback:添加腳本或者在原有腳本中監聽以下函數:

即可監聽到粒子系統的完全停止。

(23)Culling Mode:剔除模式

當粒子系統從螢幕中移出的時候,對應的處理方式。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

Automatic:如果粒子系統是循環發射,則會暫停發射,非循環情況下不會暫停發射。

Pause and Catch-up:暫停粒子播放,當再次移入螢幕時,會做額外計算,使粒子系統看起來像沒有被暫停過一樣,是耗性能的設定,根據實際情況使用。

Pause:暫停粒子發射。

Always Simulate:不會暫停粒子發射。

(24)Ring Buffer Mode:環形緩沖模式

控制粒子的消失方式,這個模式适合用來做腳印或者彈孔等持續性的效果。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

Disabled:粒子在自己的生命周期後銷毀。

Pause Until Replaced:粒子在生命周期後并不會被銷毀,保持最後的形态直至系統中的粒子數超過最大限制後立即被新粒子取代。

Loop Until Replaced:這種模式跟上一種很像,在自己的生命周期後不會銷毀,選擇該設定後會增加一個Loop Range的選項:

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

可以設定從0 ~ 1的值,這個值表示的是粒子生命周期的比重,比如設定的是0 ~ 0.5,如果粒子的生命周期是2s,那麼經過2s後,粒子會重複顯示0s ~ 1(2 * 0.5)s這段時間内粒子的效果,直至超過系統最大粒子數後被新粒子取代。

2、發射器Emission子產品

粒子發射的速率,以及瞬間發射大量粒子(爆炸效果),可以在該子產品中進行設定。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)
(1)Rate over Time:發射頻率按時間

1秒發射的數量。曲線時間軸是Duration時間。

(2)Rate over Distance:發射頻率按距離

1米發射的數量。曲線時間軸是Duration時間。

(3)Bursts:迸發

從第幾(Time)秒開始。發射多少個(Count)。這次發射循環幾次(Cycles)。每次循環間隔多久(Interval)。

Time:粒子爆發的時間,不能超過粒子系統的Duration,就算你填寫一個非法的數,也會被強制修改。

Count:如果選擇曲線,曲線的橫軸是時間軸,代表的是粒子系統的生命周期。有4個配置可以選擇.

Cycles:從爆發時間開始的循環次數。

Interval:兩次循環的間隔時間,超過粒子系統的Duration無意義。

Probability:每次爆發的可能性。

3、發射器形狀Shape子產品

發射器形狀内部随機位置生成,并能提供初始的力,該力的方向将延表面法線或随機方向發射。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)
Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)
(1)Sphere:球體
Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

Radius:球體半徑。

Radius Thickness :發射粒子的體積比例。值為0表示從形狀的外表面發射粒子,值為1表示從整個體積發射粒子。

Arc:圓弧,适用于球體、半球、椎體、甜甜圈、圓形邊緣。

(1)Mode:模式控制粒子圍繞圓弧生成的模式

(Random随機,Loop循環,Ping-Pong乒乓,Burst Spread突發擴張)。

(2)Spread:傳播,隻在弧的特定角度産生粒子。

(0為禁用,在Arc設定的值下,展現特定的角度來發射粒子,看起來沒有那麼随機)。

Texture:粒子用來從上邊獲得顔色紋理。

Position:改變粒子發射的位置。

Rotation:改變粒子發射的旋轉。

Scale:改變粒子發射的形狀縮放。

Align To Direction:根據粒子的初始行進方向定向粒子。(貌似廣告闆模式失效,圖檔朝向都改成了初始速度的方向)

Randomize Direction:将粒子方向朝随機方向混合,設定為0将不起作用,設定為1時粒子方向完全随機。

Spherize Direction:将粒子方向朝球面方向混合,從它們的變換中心向外行進。設定為 0 時,此設定不起作用。設定為 1 時,粒子方向從中心向外(與 Shape 設定為 Sphere 時的行為相同)。

Randomize Position:以随機量移動粒子,直至達到指定值。此屬性設定為 0 時,此設定不起作用。任何其他值都會對粒子的生成位置應用一些随機性。

(2)Hemisphere:半球
(3)Cone:椎體
(4)Donut:甜甜圈
(5)Box:盒子
(6)Mesh,Mesh Renderer,Skinned Mesh Renderer:網格和網格渲染
Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

Type:指定從何處發射粒子。(Vertex從頂點發射粒子,Edge從邊上發射,Triangle從三角形發射)

Mode:如何為每個新粒子選擇網格上的位置。(Random随機位置的粒子,Loop從網格中下一個頂點發射每個新粒子,Ping-Pong類似Loop,但會在每個循環後沿網格頂點交替方向)

Mesh:提供發射器形狀的網格。

Single Material:指定是否從特定子網格(由材質索引辨別)發射粒子。(啟用此屬性,會顯示一個數字字段,可以用該字段指定材質索引号)

Use Mesh Colors:使用網格頂點顔色調整粒子顔色,或者,如果頂點顔色不存在,則使用材質中的着色器顔色屬性color或者tincolor。

Normal Offset:在距離網格表面多遠處發射粒子(在表面法線方向上)

(7)……

4、Texture Sheet Animation子產品

粒子的圖形不必是靜止圖像。此子產品允許您将紋理視為可做為動畫幀進行播放。
           
Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)
(1)Mode

分别有Grid模式和Sprites模式。

(2)Tiles

紋理在水準和垂直方向上劃分的區塊數量。

若紋理為3行4列,則X、Y分别填入3,4。

(3)Animation

動畫模式。可設定為Whole Sheet或Single Row

(即精靈圖集的每一行代表一個 單獨的動畫序列)

(4)Time Mode

選擇粒子系統如何在動畫中對幀進行采樣。

(5)Frame over Time

通過一條曲線指定動畫幀随着時間的推移如何增加。

(6)Start Frame

允許指定粒子動畫應從哪個幀開始。

(7)Cycles

動畫序列在粒子生命周期内重複次數。

(8)Affected UV Channels

允許具體指定粒子系統影響的UV流。

5、Lights子產品

使用此子產品可将實時光照添加到一部分粒子。
           
Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)
(1)Light

配置設定一個光照,說明粒子的燈光應該是什麼樣子。

(2)Ratio

一個介于0和1之間的值,表示将接受光照的粒子的比例。

(3)Random Distribution

選擇是随機配置設定還是定期配置設定光照。設定為true時,每個粒子都有根據ratio的值随機接受光照的機會。較高的值可增加粒子接受光照的機率。為false時,由ratio控制新建立的粒子接受光照的頻率。

(4)Use Particle Color

設定為true的時候,光照最終顔色将通過其附加到的粒子的顔色進行調制。為false則不作任何更改。

(5)Size Affects Range

啟用此屬性在光照中指定的Ratio(範圍)将受到粒子大小的影響。

(6)Alpha Affects Intensity

啟用此屬性後在光照的Intensity(強度)将受到粒子Alpha影響。

(7)Range Multiplier

使用此曲線在粒子的生命周期内将一個自定義乘數應用于光照範圍。

(8)Intensity Multiply

使用此屬性在粒子的生命周期内将一個自定義乘數應用于光照強度。

(9)Maximum Lights

使用此設定可避免意外建立大量光照,大量光照可能會使編輯器無響應,且影響程式性能。

6、Renderer子產品

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)
(1)Render Mode
Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

Billboard:粒子始終面向錄影機。

Stretched Billboard:粒子面向錄影機,但是會應用各種縮放。

(Camera Scale:根錄影機運動拉伸粒子。為0禁用相機運動拉伸)

(Velocity Scale:根據粒子速度比例拉伸粒子。為0禁用)

(Length Scale:沿着粒子速度方向根據粒子目前大小按比例拉伸粒子。為0則會使粒子消失)

Horizontal Billboard:粒子平面與XZ“地闆”平面平行。

Vertical Billboard:粒子在世界y軸上直立,但面向錄影機。

Mesh:從3D網格而非從紋理渲染粒子。(粒子會變成立體的)

None:使用Trails子產品時,如果隻是想渲染軌迹并隐藏預設渲染,則可使用此屬性。(不啟用Trails子產品時,粒子會消失)

(2)Normal Direction

用于粒子圖形的光照法線的偏差。值為1表示法線指向錄影機,而值為0表示法線指向螢幕中心。(僅适用于Billboard模式)

(3)Material

渲染粒子的材質

(4)Sort Mode

繪制粒子的順序。

(5)Sorting Fudge

粒子系統排序的偏差。較低的值會增加粒子系統在其他透明對象(包括其他粒子系統)上繪制的幾率。對整個系統有影響,對單個粒子排序沒影響。

(6)Min Particle Size

最小粒子大小(僅當Billboard模式)

(7)Max Particle Size

最大粒子大小(僅當Billboard模式)

(8)Render Alignment

使用下拉單選框選擇粒子公告牌面向的方向。

(View:粒子面向錄影機平面)

(World:粒子與世界軸對齊)

(Local:粒子與遊戲對象的變換元件對齊)

(Facing:粒子面向錄影機遊戲對象的直接位置)

(9)Flip

在指定軸上鏡像一定比例的粒子。較高的值會翻轉更多的粒子。

(10)Allow Roll

控制面向錄影機的粒子是否可以圍繞錄影機的z軸旋轉,禁用此屬性對VR應用特别有用。

(11)Pivot

修改粒子的中心軸點。此值是粒子大小的乘數。

(12)Visualize Pivot

在Scene視圖中預覽粒子的軸心點。

(13)Masking

設定粒子系統渲染的粒子在與精靈遮罩互動的行為方式。

(No Masking:不與廠家中任何精靈遮罩互動)

(Visible Indide Mask:在由精靈遮罩覆寫的地方是可見的,而在遮罩外部不可見)

(Visble Outside Mask:在精靈遮罩外部是可見的,而在遮罩内部不可見,精靈遮罩會隐藏其覆寫的粒子部分)

(14)Apply Active Color Space

線上性顔色空間中渲染時,系統會在将粒子顔色上傳到 GPU 之前從伽馬空間轉換粒子顔色。

(15)Custom Vertex Streams

配置材質的頂點着色器中可用的粒子屬性。

(16)Cast Shadows

啟用此屬性,粒子在光下會産生陰影。(Two Sided允許從網格的任一側投射陰影,Shadows Only使陰影可見,網格不可見)

(17)Receive Shadows

決定陰影是否可投射到粒子上。隻有不透明材質才能接受陰影。

(18)Shadow Bias

沿着光照方向移動陰影以消除因使用公告牌來模拟體積而導緻的陰影瑕疵。

(19)Motion Vectors

運動矢量

(20)Sorting Layer ID

渲染層級

(21)Order in Layer

此渲染器在排序圖層中的順序。

(22)Light Probes

基于探針的光照插值模式。

(23)Reflection Probes

如果啟用此屬性,并且場景中存在反射探針,則會為此遊戲對象拾取反射紋理,并将此紋理設定為内置的着色器 uniform 變量。

7、其他子產品暫不介紹

二、火焰粒子系統案例制作

1、火焰素材

本案例以下面火焰素材為例。
           
Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

2、建立粒子系統

Hierarchy面闆中,在需要建立粒子系統的物體下,滑鼠右擊,選擇Effects | Particle System。對其重命名為HuoYan。

3、建立材質球

在Project面闆中建立一個新的材質New Material,重命名為HuoYan,一定要将其Shader修改為Additive(Mobile/Particles/Additive),這個模式主要是可以去除透亮貼圖中的黑色部分。

4、貼圖

(1)将火焰素材圖檔拖入Textures檔案夾中。

(2)将貼圖賦給材質,再将材質拖給Hierarchy面闆中的粒子系統。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

5、屬性修改

(1)務必勾選上紋理層動畫子產品Texture Sheet Animation,并設定其貼圖的行列Tiles,本例中改為2,2,如下圖所示。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

(2)通常将粒子系統Renderer裡的最大粒子大小Max Particle Size由初始的0.5修改為1(也就是視窗大小,它的有效值為0-1)。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

(3)此時粒子都是朝着一個方向,非常地規律,沒有火焰的樣子,這時我們需要調整它的初始旋轉角度Start Rotation,選擇“倒三角”下的Random Between Two Constants(-360,360)。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

(4)更改發射器Emission子產品中的數值,使火焰更加逼真。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

(5)還可以對其形狀做修改。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

(6)對火焰顔色進行一個調整,用到Color over Lifetime。下圖箭頭中,上面代表透明度,下面代表顔色。

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

(7)還可以修改其初始生命周期Start Lifetime,初始速度Start Speed,初始大小Start Size等屬性。

6、實作效果圖

Unity3D基礎入門之粒子系統(屬性介紹+火焰粒子系統案例制作)

繼續閱讀