Unity3D深入淺出 - 粒子系統(Particle System)

粒子系統是在三維控件渲染出來的二維圖像,主要用於煙,火,水滴,落葉等效果。一個粒子系統由例子發射器、粒子動畫器和粒子渲染器三個獨立的部分組成。該文章出自【狗刨學習網】

      Unity中自帶了一些粒子效果,在Assets>ImportPackage>articles,即可將Prticles.UnityPackage導入到項目中,這些粒子效果包括:Dust(沙塵)、Fire(火焰)、Water(水)、Smoke(煙霧)、Sparkles(閃光),還有一些粒子資源 Sources、Misc(雜項),如下圖

       

      隨便拖出來幾個

       

      接下來講一下Unity3d中的舊版粒子系統:

      先創建一個Empty的GameObject,爲其添加下圖的五個組件

       


1.Ellpsoed Particle:橢球粒子發射器,可在一個星球範圍內生成大量的粒子,可痛過Ellipsoid屬性對其縮放和拉伸。
  • Emit:粒子發射,開啓該項,發射器將發射粒子
  • Min/Max  Size:生成的每顆粒子的最小/大尺寸
  • Min/Max Energy:每顆粒子的最小/大生命週期(以秒爲單位)
  • Min/Max Emission:每秒生成粒子的最小/大數目
  • World Velocity:粒子在世界座標中沿xyz方向的初始速度
  • Local Velocity:局部速度,以某個對象爲參照物,相對沿着xyz方向的初始速度。
  • Rnd Volocity: 隨機速度
  • Emitter Velocity Scale:發射速度比例
  • Tangent Velocity:切線速度,粒子XYZ軸穿過發射器表面的初始速度。
  • Angular Velocity:角速度,新生粒子的角速度,單位(°/s)
  • Rnd Angular Velocity:隨機角速度
  • Rnd Rotation :隨機旋轉,啓用後粒子會以隨機的方向生成。
  • Simulate in World space:在世界座標空間中更新粒子運動。如果關閉該項,則每一個單獨粒子的位置總是隨着發射器的位置變化而發生相對的運動;若開啓該項,粒子不會受到發射器運動的影響。比如一個上升的火球,火焰會在產生後向上漂浮並距離火球的距離越來越遠,如果關閉此項,那麼這些相同的火焰是會隨着火球而在屏幕上移動的。
  • One Shot:單次發射,將在Emission屬性內一次性地生成所有的粒子,然後停止發射,啓用該屬性可用於爆炸,水花四濺,魔法效果;關閉該屬性,槍管的煙,風,瀑布等效果。
  • Ellipsoid:橢球,根據XYZ軸設置粒子的生成範圍。
  • Min Emitter Range:最小發射器的範圍


細節說明:橢球粒子發射器是最基本的粒子發射器,添加到場景後,可以定義成才粒子的邊界並給出粒子的初始速度。使用Particle Animator(粒子動畫器)可以操縱粒子隨時間不斷的變化出想要的效果。

      當時圖表現不同的粒子時,可分別調整Size,Energy,Emission以及Velocity屬性。例如小的Size可以模擬螢火蟲或者天空中的星星,Energy和Emission屬性可以控制粒子在屏幕中保留多超時間以及一次可以生成多少顆粒子。Velocity屬性控制粒子的運動,可以通過腳本改變Velocity的值模擬不同的粒子效果。如果想模擬風,可設定Velocity屬性的X和Z值。
注意:要謹慎使用大量粒子效果,粒子數量越多對硬件設備的要求就越高。所以儘量用最少的粒子來實現需要的效果。

      Emit屬性要與粒子動畫器中的AudoDestruct(自動銷燬)屬性相結合使用。通過腳本可以使發射器停止發射粒子,然後自動銷燬功能會自動銷燬粒子系統以及它所綁定的遊戲對象。

2.Mesh Particle Emitter:網格粒子發射器,在一個網格周圍發射粒子,粒子從網格的表面開始生成。(部分屬性同橢球粒子發射器一樣)
  • Interpolate Triangles:插值三角形。開啓該項粒子會在網格的表面生成;關閉該項粒子則會在網格的頂點處生成。
  • Systematic:系統性,粒子會按照網格定義好的頂點順序來生成。
  • Min/Max Normal Velocity:最小/大法線速度,從網格拋出粒子的最小/大數量。
  • Mesh:網格,可單機圓圈按鈕Select Mesh,選擇不同的網格,不同的網格,粒子的發射的初始形態就不同。


細節說明:當需要更精確的控制粒子生成的位置以及方向時,網格粒子發射器會比橢球發射器更加簡單,它可用來創造更高級的效果。網格粒子發射器通過附加在網格上的頂點來發射粒子,因此網格區域的多邊形越密集,粒子的發射也就越密集。

3.Particle Animator:粒子動畫器使粒子隨着時間而運動,可對粒子系統添加風,拖放和顏色循環等效果,下面介紹屬性。
  • Does Animation Color:使用顏色的動畫,開啓後粒子在其生命週期內會循環變化顏色。
  • Color Animation:顏色動畫,可定義五種顏色,使所有的粒子循環使用這些顏色。
  • World Rotation Axis:是粒子圍繞世界座標局部旋轉,可用來創造高階的法術效果。
  • Local Rotation Axis:局部旋轉軸,粒子圍繞着局部座標來旋轉。
  • Size Grow:粒子會隨着時間變化而變大。
  • Rnd Force:隨機外力,每一幀都隨機施加一個外力。
  • Force:外力,每一幀都給粒子施加外力。
  • Damping:阻尼,每一幀有多少粒子的速度會減慢,當值設爲1時沒有阻尼,因此粒子的速度不會減慢。
  • Autodestruct:自動銷燬,啓用該向後,則所有消失的粒子在銷燬時同時銷燬爲其綁定的遊戲對象。


細節說明:
  Rotation Axes:旋轉軸,不管是設置局部還是世界座標旋轉軸,都會使粒子圍繞其指定的軸旋轉。數值越大旋轉越快。旋轉軸設置爲局部的時候是改變的Transform組件的Rotation屬性;設置爲世界座標旋轉時粒子的旋轉軸始終不變。

  Forces&Damping:外力和阻尼,利用外力可時一個粒子在方向上產生加速。阻尼可在粒子不改變方向的情況下使其加速或者減速,值爲1表示沒有阻尼,粒子不會加速或減速;值爲0表示粒子會立即停止;值爲2表示每秒粒子的速度都會加倍。

  Destorying GameObjects attached to Particles:銷燬綁定到粒子的對象。

     比如一個油桶爆炸的效果;可將一個Emit屬性被禁用的爆炸粒子效果附加到油桶上,同時開啓這個爆炸粒子的Autodestruct屬性。在發生碰撞時開啓Emitter屬性(即開啓粒子發射器播放爆炸效果),在發生爆炸效果後油桶會隨着粒子的生命週期一併銷燬。
4.World Particle Collider:世界座標粒子碰撞器,可以使得粒子與場景中其他的碰撞體發生碰撞。
  • Bounce Foctor:彈性係數。粒子與其他對象發生碰撞時會使其加速或減速,該屬性與粒子動畫器的組件的Damping(阻尼)屬性相類似。
  • Collision Energy Loss:碰撞活力損失,當發生碰撞時粒子每秒損失的活力總和,小於0時粒子銷燬。
  • Collides with:碰撞對象,決定粒子與哪一個層級發生碰撞。
  • Send Collision Message:發生碰撞消息,開啓該項後,每個粒子都會發送一個碰撞消息,可痛過腳本捕獲到該消息。
  • Min Kill Velocity:最小消滅速度,如果一個粒子因爲碰撞而使速度降到最小消滅速度,它將被銷燬。


細節說明:Message:發送消息,若開啓Send Collision Message,則在碰撞中任何粒子都會發送消息OnParticleCollision到粒子綁定的對象和與粒子相碰撞的對象。
注意:Send Collision Message可用作模擬子彈和衝擊傷害,當有許多粒子時碰撞檢測會變得緩慢,因此要適當地使用粒子碰撞,消息發送會佔用大量的消耗,因此儘量不要將其用在粒子系統中。

5.Particle Renderer:粒子渲染器,可將粒子渲染到屏幕上,沒有粒子渲染器就看不到粒子效果。
  • Cast Shadows:開啓該項,粒子可產生陰影。
  • Receive Shadows:開啓該項,粒子可接收陰影。
  • Materials:可將指定的材質顯示到每個粒子的位置,可調整Size參數來添加粒子類型。
  • Use Light Probes:使用光線探測,開啓後則烘培過的光線探測可顯示在場景中,它是一個插值光線探測。
  • Light Probe Anchor:光線探測探測錨點,開啓後渲染器會通過Transform組件的位置來尋找插值光線探測。
  • Camera Velocity Scale:相機速度比例,應用到基於相機運動的粒子的延伸總量。
  • Stretch Particle:粒子伸展,該屬性決定了粒子的渲染方式。

    • Billboard:公告板,粒子被渲染爲面向Camera的方向。
    • Sorted Billboard:分類公告板,粒子按照深度進行分類,使用混合材質時用到該項。
    • Stretched:伸展,粒子面向其正在運動的方向。
    • Horizontal Billboard:水平公告板,所有粒子沿着XY軸平面對齊。
    • Vertical Billboard:垂直公告板,所有粒子沿着XZ軸的平面對齊。


  • Length Scale:長度比例,如果Stretch Particles設置爲伸展,那麼此值可以決定粒子在其運動方向上的長度。
  • Velocity Scale:速度比例
  • Max Particle Size:最大粒子大小,決定在屏幕上顯示粒子的大小,1覆蓋整個視圖,0.5覆蓋一半的視圖。
    UV Animation :UV動畫如果有一項被設置,則通過使用平鋪文理來生成粒子的UV座標。


    • X Tile:X軸向上的平鋪數。
    • Y Tile:Y軸向上的平鋪數。
    • Cycles:動畫序列循環的次數。


細節說明:
      1.選擇材質,當建立一個粒子渲染器時,使用適當的材質及可雙面渲染材質着色器是非常重要的,大部分時候所要使用的材質都有一個內置的粒子着色器。

      2.扭曲粒子,默認情況下粒子會議Billboarded的方式進行渲染,這對於表現煙霧,爆炸等會有很好的效果。粒子可以任何速度向然和方向伸展,這對於火化,閃電,光束的效果非常有用。

      3.動畫紋理,粒子系統可通過一個動畫平鋪貼圖來渲染。要使用此功能應保持在圖像的節點之外。當粒子按其生命週期去循環時,也會連同圖像一起進行循環。這對於給粒子增加更多的生命週期或者製作小的旋轉碎片非常有用。
對粒子系統就介紹到這裏,自己可以嘗試做一個爆炸效果,或者下雨,下雪等效果。

發佈了0 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章