11、Size over Lifetime(生命周期內大小)
- 主要用于定義粒子從發射到消亡的整個生命周期內,其大小如何隨時間發生變化。通過該模塊,可以創建出如煙霧擴散、火焰膨脹等。
- Separate Axes:當勾選此選項時,可以分別控制粒子在X軸、Y軸和Z軸上的大小變化。這允許實現非均勻縮放效果,如粒子在水平方向上擴散而在垂直方向上保持不變。
注意:Z軸的控制僅對網格粒子有效。 - Size:用于定義粒子大小隨時間變化的規律,通過調整曲線可以實現逐漸增大、先大后小等不通的變化效果。
- 例
- 煙霧效果:可以將曲線設置為向上坡道,使粒子在生命周期內逐漸增大,以模擬煙霧擴散的過程。
- 火焰效果:可以設置為先上升后下降得駝峰曲線。這可以模擬火焰粒子在發射后膨脹并在后期隨著燃料用盡而逐漸消散得過程。
- 爆炸效果:粒子的大小可能需要在短時間內迅速增大并隨后消散。
12、Size by Speed(速度決定大小) - 可以根據粒子的速度來改變粒子的大小,可以模擬如爆炸時小碎片速度更快而大碎片則速度較慢。
- Separate Axes:勾選后單獨設置XYZ方向的大小變化。
- Size:根據曲線設置大小。
- Speed Ranage:速度范圍
13、Rotation over Lifetime(生命周期內粒子旋轉) - Separate Axes(分離軸)
當勾選此選項時,可以分別為X、Y、Z軸設置不同的旋轉速度和曲線。這允許開發者實現更復雜的旋轉效果,如粒子在旋轉時同時繞不同軸旋轉。 - Angular Velocity(角速度)
- -Constant(恒定):設置粒子每秒鐘的恒定旋轉速度(以度/秒為單位)。這會導致所有粒子以相同的速度旋轉。
- -Curve(曲線):通過曲線編輯器設置粒子在整個生命周期內的旋轉速度變化。開發者可以定義一個或多個關鍵幀,以控制旋轉速度如何隨時間變化。
- -Random Between Two Constants(兩個常數之間的隨機值):設置兩個角速度值,粒子將在這兩個值之間隨機選擇旋轉速度。
- -Random Between Two Curves(兩條曲線之間的隨機值):類似于Curve選項,但允許定義兩條曲線,粒子將在這兩條曲線之間隨機選擇旋轉速度的變化軌跡。
- 爆炸碎片:在模擬爆炸是碎片在飛行過程中旋轉。
- 當粒子用于模擬軌跡(如導彈尾跡)時,可以確保軌跡在視覺上保持連續性和方向性。
14、Rotation by Speed(速度旋轉模塊) - Separate Axes(分離軸):當勾選此選項時,可以分別為X、Y、Z軸設置不同的旋轉速度和速度范圍。這允許實現更復雜的旋轉效果,如粒子在移動時繞不同軸旋轉。
- Angular Velocity(旋轉速度):旋轉速度的基準值或曲線,表示粒子在特定速度下的旋轉速度。這可以是一個恒定的值,也可以是通過曲線編輯器定義的隨時間變化的值。
- Speed Range(速度范圍)定義了一個速度區間,該區間內的粒子速度將被映射到Angular Velocity所定義的旋轉速度上。速度范圍的下限和上限決定了哪些速度的粒子將受到Rotation by Speed模塊的影響。
- 風吹效果:隨著風力增強,粒子移動速度會增加,旋轉速度也增加,模擬風吹動粒子的效果
14、External Forces(外力) - 通過與Force Field(力場)組件配合使用,模擬外部力(如風、重力、渦流等)對粒子系統發射的粒子的影響。這些力可以改變粒子的運動軌跡、速度、旋轉等屬性,從而創造出更加復雜和逼真的粒子效果。
- Multiplier(乘數)
控制施加到粒子系統上的力的強度。值為1時,表示全部施加;值為0時,表示不施加。 - Influence Filter(影響過濾器)
選擇通過何種方式控制力場對粒子的影響。通常有兩種方式: - -Layer Mask(層遮罩):通過層的方式選擇力場對哪一層生效。
- -List(列表):通過顯式列表確定哪些力場對當前粒子系統生效。
- Force Field(力場)組件參數
- 當與External Forces模塊配合使用時,Force Field組件提供了多種力場類型,如引力、渦流等,每個類型都有其特定的參數設置:
- 引力(Gravity):
- -Strength(強度):設置引力中心點對粒子的吸引力,值越高,強度越大。
- -Focus(焦點):設置引力中心點,值為0時位于形狀中心處,值為1時位于形狀外邊緣。
渦流(Rotation): - -Speed(速度):設置粒子圍繞渦流的速度,值越高,速度越快。
- -Attraction(吸引力):設置粒子被拖入渦流的強度,值為1時最大,值為0時不應用任何吸引力。
- -Randomness(隨機性):設置形狀的隨機軸以推動粒子四處移動,值為1時表示最大隨機性,值為0時不應用隨機性。
- 風效果:通過設置漩渦或類似風力效果,可以模擬風吹動粒子(如樹葉、雪花等)。
- 重力效果:可以模擬粒子在重力作用下的下落(如雨、雪等)。
15、Noise(噪波) - 為粒子添加隨機化效果,可以模擬出更加自然和動態的粒子效果,如泡泡在空氣中飄蕩、雪花飄落、塵土飛揚等。
- Strength(強度):控制噪聲對粒子影響的整體強度。值越高,粒子受噪聲影響越大,波動起伏程度也越大。
可以為X、Y、Z軸分別設置不同的強度值,以實現更精細的控制。 - Frequency(頻率):控制粒子改變行進方向的頻率以及方向變化的突然程度。
低值會產生柔和、平滑的噪聲效果,而高值會產生快速變化的噪聲效果。 - Scroll Speed(滾動速度):控制噪聲圖的移動速度,進而影響粒子的不穩定性和不可預測性。
值越高,噪聲圖滾動越快,粒子運動軌跡越不穩定。 - Damping(阻尼):若啟用,則噪聲的強度與頻率成正比。這有助于在保持相同行為但具有不同大小的同時縮放噪聲場。
- Octaves(倍率):通過重疊噪聲圖來產生最終噪聲效果。默認值為1,即僅使用一層噪聲圖。
增加Octaves值會增加性能消耗,但也會使噪聲效果更加豐富和細膩。 - Octave Multiplier(倍率乘數):當Octaves不為1時啟用,表示對每個噪聲層按此比例降低強度。
- Octave Scale(倍率縮放):當Octaves不為1時啟用,表示對每個噪聲層按此乘數調整頻率。
- Quality(質量):控制噪聲的生成質量。可選值包括低、中、高。
低質量設置可顯著降低性能成本,但也會影響噪聲的豐富度和細節。 - Remap(重新映射):將最終噪聲值重新映射到不同的范圍,以進一步調整噪聲效果。
- Position Amount(位置量):控制噪聲對粒子位置影響程度的乘數。值越大,噪聲對粒子位置的影響越明顯。
- Rotation Amount(旋轉量):控制噪聲對粒子旋轉(以度/秒為單位)影響程度的乘數。值越大,粒子受噪聲影響旋轉越快。
- Size Amount(尺寸量):控制噪聲對粒子大小影響程度的乘數。值越大,粒子受噪聲影響尺寸變化越明顯。
16、Collision(碰撞) - 用于模擬與場景中物體發生碰撞
- Collision模塊提供了兩種主要模式:Planes和World。
- -Planes模式:用于定義碰撞平面的變換。這種模式比World模式節省計算量,因為它僅能對平面產生一個碰撞。
適用于簡易場景,如地板、墻壁等。Planes是可疊加的,不是只能設置一塊。
在Planes模式下,可以通過可視化選項(如Visualization)將碰撞平面在Scene視圖中顯示為線框網格或實體平面,并調整其大小(Scale Plane)。 - -World模式:允許粒子與世界中的所有物體碰撞。
可以通過Collision Mode下拉選單定義碰撞是應用于2D還是3D世界。
在World模式下,可以設置更詳細的碰撞參數,如Dampen(碰撞后損失的速度比例)、Bounce(碰撞后反彈的速度比例)、Lifetime Loss(碰撞后損失的總生命周期比例)等。 - 關鍵參數
- Collision Quality:控制粒子碰撞的質量,影響有多少粒子可以穿過碰撞體。
可選值包括High、Medium (Static Colliders)、Low (Static Colliders)。 - -High:碰撞始終使用物理系統來檢測碰撞結果,最準確但最耗費資源。
- -Medium (Static Colliders):使用一組體素來緩存先前的碰撞,適用于靜態碰撞體,計算資源消耗適中。
- -Low (Static Colliders):與Medium類似,但每幀查詢物理系統的次數更少,計算資源消耗最少。
- Collides With:定義粒子只會與哪些層上的對象發生碰撞。這有助于控制粒子與特定類型對象的交互。
- Enable Dynamic Colliders:當選中時,粒子也可以與動態對象碰撞(否則僅與靜態對象碰撞)。這對于需要粒子與動態場景交互的效果特別有用。
- Voxel Size:在使用Medium或Low質量碰撞時,Unity會在網格結構中緩存碰撞。Voxel Size控制著網格大小,較小的值提供更高的準確性但占用更多內存。
- Collider Force:控制粒子碰撞后對物理碰撞體施加的力。這對于用粒子推動碰撞體非常有用。
可以根據碰撞角度(Multiply by Collision Angle)、粒子速度(Multiply by Particle Speed)和粒子大小(Multiply by Particle Size)來縮放力的強度。 - Send Collision Messages:如果啟用,則允許從腳本中通過OnParticleCollision函數檢測粒子碰撞。這提供了對粒子碰撞事件的編程控制。
- 通過調整參數,可實現粒子與物體之間的反彈、消失、推動等效果。
17、Triggers - Triggers模塊通過監聽粒子與碰撞體之間的交互事件(如進入、離開、在內部、在外部等),來觸發特定的操作或回調。這些操作可以包括訪問粒子列表、修改粒子屬性、銷毀粒子等。
- 指定碰撞體:首先,需要指定粒子可以與場景中的哪些碰撞體進行交互。這可以通過將碰撞體添加到Triggers模塊的Colliders列表中實現。
可以添加一個或多個碰撞體,并通過Add (+)和Remove (-)按鈕來管理列表中的碰撞體。
Triggers模塊提供了四種事件類型來描述粒子與碰撞體的相互作用: - -Inside:粒子在碰撞體的邊界內。
- -Outside:粒子在碰撞體的邊界外。
- -Enter:粒子進入碰撞體的邊界。
- -Exit:粒子退出碰撞體的邊界。
對于每種事件類型,可以在Inspector中設置當粒子滿足該事件條件時將執行的操作,包括Callback(在回調函數中訪問粒子)、Kill(銷毀粒子)和Ignore(忽略粒子)。 - Radius Scale:此參數用于設置粒子的碰撞體邊界,以便更緊密地將粒子的碰撞體邊界匹配到粒子的視覺外觀。
輸入1表示事件在粒子接觸碰撞體時發生;輸入小于1的值表示觸發器在粒子穿透碰撞體之前發生;輸入大于1的值表示觸發器在粒子穿透碰撞體之后發生。 - Visualize Bounds:此設置用于指示是否在Scene視圖中顯示每個粒子的碰撞體邊界。啟用此屬性可幫助開發者直觀地看到粒子的碰撞體邊界。
- Collider Query Mode:通過此參數控制可以獲得哪些關于粒子與碰撞體交互的信息。可選值包括Disabled(不獲取任何信息)、One(獲取與每個粒子交互的第一個碰撞體的信息)和All(獲取與每個粒子交互的每個碰撞體的信息)。
- Triggers模塊應用于需要粒子與場景中物體有復雜交互的粒子效果中,如:
- -雨滴落在地面或窗戶上時的效果。
- -火焰與障礙物交互時的動態效果。
- -爆炸時碎片與周圍環境的交互。
- Triggers在回調中訪問和修改粒子。
ParticleSystem ps;List<ParticleSystem.Particle> ListParticles = new List<ParticleSystem.Particle>();void Start(){ps = GetComponent<ParticleSystem>();}void OnParticleTrigger(){// 獲取進入碰撞體的粒子 需要將Enter修改為Callbackint num = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, ListParticles);// 遍歷這些粒子并修改它們的屬性(例如顏色) for (int i = 0; i < num; i++){ParticleSystem.Particle p = ListParticles[i];p.startColor = new Color(0, 0, 0, 1); // 設置為黑色 ListParticles[i] = p;}// 將修改后的粒子重新分配回粒子系統 ps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, ListParticles);}
18、Sub Emitters(子發射器)
- 允許在粒子生命周期的特定階段創建附加的粒子發射器,這些子發射器可以在粒子的出生、消亡、碰撞等時刻生成其它粒子。
- Sub Emitters模塊提供了多種觸發條件,用于控制子發射器的激活時機:
- -Birth:粒子的創建時間。
- -Collision:粒子與對象發生碰撞的時間。
- -Death:粒子的銷毀時間。
- -Trigger:粒子與觸發碰撞體相互作用的時間。
- -Manual:僅在通過腳本進行請求時觸發。
請注意,Collision、Trigger、Death和Manual事件只能使用- - Emission模塊中的爆發發射。 - Emit Probability:用于配置子發射器事件的觸發概率。
- 可從父粒子繼承多種屬性,如大小、旋轉、顏色、生命周期等。
- 示例:
- -子彈效果:子彈離開槍管時,可以使用子發射器生成一縷- 煙塵效果。
- -爆炸效果:火球撞擊目標時,可以使用子發射器生成爆炸碎片和火焰效果。
- -煙花效果:在煙花粒子系統中,子發射器可以生成多層級的粒子效果,模擬煙花的復雜爆炸過程。
19、Texture Sheet Animation(紋理動畫) - 可將一組紋理視為動畫幀進行播放,用于設置粒子生命周期中的貼圖動畫。
- Grid模式:將粒子材質分割成多張圖片進行控制播放
- -Tiles:紋理在水平和垂直方向上劃分的區塊數量,決定了動畫幀的數量。
- -Animation:指定動畫幀的播放方式,如Whole Sheet(整頁作為一個動畫序列)、Single Row(每一行代表一個單獨的動畫序列)等。
- Sprites模式:可設置多張圖片。
- TimeMode:設置動畫變化方式,時間、速度、FPS。
- Cycles:動畫序列在粒子整個生命周期中重復的次數。
- 示例:
- 火焰:將火焰紋理分割成多個幀,模擬火焰的跳動和閃爍。
- 水流:將水流紋理分割成多個幀,模擬水流效果。
- 爆炸:用來播放在爆炸瞬間的火焰和碎片動畫。
20、Lights(光照) - Light Prefab:指定用于粒子光照的光照預制件。這個預制件定義了光照的顏色、強度、范圍等屬性。決定了粒子光照的外觀和效果。
- Ratio:一個介于0和1之間的值,表示將接受光照的粒子的比例。
較高的值會增加粒子接受光照的概率。
設置為0時,沒有粒子會接受光照。
設置為1時,所有粒子都會接受光照。 - Random Distribution:控制光照是否隨機分配給粒子。
設置為True時,每個粒子都有根據Ratio值隨機接受光照的機會。
設置為False時,由Ratio控制新創建的粒子接受光照的頻率(例如,每第N個粒子將接受光照)。 - Use Particle Color:控制光照的最終顏色是否通過其附加到的粒子的顏色進行調制。
設置為True時,光照的顏色會根據粒子的顏色進行調整。
設置為False時,光照將使用其自身的顏色而不受粒子顏色的影響。 - Size Affects Range 和 Alpha Affects Intensity:分別控制粒子的大小和Alpha值是否影響光照的范圍和強度。
當啟用Size Affects Range時,光照的范圍將受到粒子大小的影響。
當啟用Alpha Affects Intensity時,光照的強度將受到粒子Alpha值的影響。 - Range Multiplier 和 Intensity Multiplier:分別用于在粒子的生命周期內將自定義乘數應用于光照的范圍和強度。
- Maximum Lights:用于限制創建的光照數量,以防止意外創建大量光照導致的性能問題。
- 示例:如火災、煙花、閃電中,通過為粒子添加實時光照,使得效果更逼真。
21、Trails(拖尾) - Ratio:拖尾效果的粒子比例,取值范圍為0到1。
- Lifetime:拖尾中每個頂點的生命周期,決定了拖尾效果的持續時間。
- Minimum Vertex Distance:較小的值會使拖尾效果更加平滑,但可能會增加性能消耗;較大的值則會使拖尾效果變得粗糙。
- World Space:拖尾頂點將被置于世界空間中,并忽略粒子系統的任何移動。決定了拖尾效果是否隨粒子系統一起移動或保持在世界空間中的固定位置。
- Die With Particles:拖尾是否在粒子死亡時立即消失,決定了拖尾效果的消失時機,是否與粒子同步。
- Texture Mode:選擇應用于拖尾的紋理模式,可以是拉伸(Stretch)或平鋪(Tile)。
- Size affects Width 和 Size affects Lifetime:分別控制粒子大小是否影響拖尾的寬度和生命周期。拖尾的寬度和生命周期將隨粒子大小的變化而變化。
- Inherit Particle Color:控制拖尾是否繼承粒子的顏色。
- Color over Lifetime 和 Width over Trail:分別控制拖尾在其附著粒子的整個生命周期內的顏色和寬度變化。
22、custom data - 自定義數據格式。
23、Renderer(渲染) - Render Mode
- Billboard:粒子始終面向攝像機,適用于模擬如火焰、煙霧等效果。
Stretched Billboard:粒子在面向攝像機的同時進行拉伸,適合模擬如雨水下落等具有速度感的效果。
Horizontal Billboard:粒子水平設置,適用于特定方向的粒子效果。
Vertical Billboard:粒子垂直設置,同樣適用于特定方向的粒子效果。
Mesh:使用網格來定義粒子的形狀,適用于需要復雜3D形狀的粒子效果。
Sorting Mode
None:不進行排序,粒子渲染順序由它們在場景中的位置決定。
Distance:根據粒子與攝像機的距離進行排序,較近的粒子先渲染。
Camera Depth:基于攝像機深度緩沖區進行排序,通常用于解決透明粒子渲染時的深度問題。