Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
3D 粒子系統屬性
發射器屬性
「Emitting」屬性旁的核取方塊可用來啟用或停用粒子系統。只有在勾選時,粒子系統才會被處理與顯示。你也可以在執行時動態切換這個屬性,以便動態啟動或關閉粒子系統。
「Amount」屬性用來設定同時可見的最大粒子數。提高這個數值能產生更多粒子,但會犧牲效能。
「Amount Ratio」屬性用來設定實際發射粒子的比例。如果小於 1.0,整個生命週期釋放的粒子數會等於「Amount」乘以「Amount Ratio」。在粒子系統運作中修改這個值,不會影響已經存在的粒子,也不會重啟粒子系統。這非常適合做粒子數量隨時間變化的特效。
你可以將另一個粒子節點設為「Sub Emitter」,這個子發射器會在每個粒子的生命週期中作為其子物件生成。詳細說明請參考本手冊中的 子發射器 章節。
時間屬性
「Lifetime」屬性設定每個粒子存在多久(以秒為單位),時間到就會消失。許多粒子屬性都可以設定於粒子生命週期內平滑變化。
「Lifetime」和「Amount」兩個屬性相關聯,決定了粒子系統的發射速率。若要計算每秒產生的粒子數,可使用以下公式:
例如:如果「Amount」為 32,「Lifetime」為 4 秒,代表系統每秒發射 8 個粒子。
「Interp to End」屬性會讓所有粒子在其生命週期結束時平滑插值到最終狀態。
如果勾選「One Shot」屬性,粒子系統將只發射一次(共「Amount」個粒子)後自動停用。預設未勾選時,粒子系統會持續發射直到被手動停用或移除。「One Shot」很適合用在單一事件觸發的特效,例如道具取得或子彈撞牆時飛散的碎片。
「Preprocess」屬性可以讓粒子系統在啟動時模擬已經運行了一段時間(以秒為單位),直接渲染那個狀態。設為 1 代表系統啟動時,就像已經運作了一秒一樣。
這很適合讓剛載入場景的粒子系統,看起來像已經運行了一段時間。比如下方範例,兩個系統都模擬區域內飛舞的灰塵。若「Preprocess」設為 0,系統啟動前幾秒會看不到灰塵,因為粒子還沒累積出效果。若設為 4,畫面一開始就會看到完全效果,因為跳過了前 4 秒的「預備」時間。
無預處理(左)vs. 預處理 4 秒(右)
你可以用「Speed Scale」屬性來調整粒子系統的快慢。這會影響粒子的運算與渲染速度。設為 0 可完全暫停粒子系統,設為 2 則會讓系統加速一倍。
不同的速度倍率:0.1(左)、0.5(中)、1.0(右)
「Explosiveness」屬性決定粒子是依序發射還是同時發射。設為 0 時粒子會一個接一個發射,設為 1 時則會全部同時發射,呈現出更「爆炸」的效果。
「Randomness」屬性會讓粒子的發射時機帶有隨機性。設為 0 時,發射間隔完全固定,粒子均勻出現。設為 1 時,間隔完全隨機,可以讓效果更自然。若「Explosiveness」設為 1,此屬性則無作用。
關閉插值(左)vs. 啟用插值(右)
「Fixed FPS」屬性限制粒子系統更新的頻率,包含屬性、碰撞、吸引器等計算。這可以大幅提升效能,特別是在有大量粒子碰撞時。注意這不會影響粒子的移動或旋轉速度,若要調整速度請使用「Speed Scale」。
若將「Fixed FPS」設得太低,粒子的動畫會變得不流暢。某些美術風格可用這效果,但大多數情況下你會希望動畫平滑。這時可啟用「Interpolate」屬性,在更新之間內插粒子屬性,即使僅 10 FPS 也能呈現如 60 FPS 的流暢度。
備註
當使用 粒子碰撞 時,如果粒子速度很快且碰撞體很薄,可能會發生穿透現象。這可透過提升「Fixed FPS」(會犧牲效能)來改善。
碰撞屬性
也參考
設定粒子碰撞需要依照 3D 粒子碰撞 章節的進階步驟操作。
「Base Size」屬性設定每個粒子的預設碰撞大小,用來檢查粒子是否與環境發生碰撞。通常應設為與粒子本身差不多的大小。若粒子體積極小且速度很快,建議適度提高此值,以避免粒子穿透碰撞體。
繪製屬性
「Visibility AABB」設定粒子系統原點周圍的可見方塊,只要方塊有任何部分在攝影機畫面內,粒子系統就會被渲染。若完全離開畫面,則不再渲染。建議將方塊設得越小越好,以提升效能。
設定「Visibility AABB」時要注意,超出方塊邊界的粒子會立即消失,且該範圍外不會發生粒子碰撞。雖然這不是 bug,但可能影響視覺效果。
勾選「Local Coords」時,所有粒子的運算(重力、上下方向、移動方向等)都以本地座標系統為準,例如上下會跟隨粒子系統或父節點的旋轉。若未勾選,則以全域世界座標計算,無論粒子系統旋轉與否,下方永遠是世界空間的 -Y。
本地座標(左)與世界座標(右)
「Draw Order」屬性決定粒子的繪製順序。「Index」按發射順序繪製,後發射的粒子會蓋在前一個之上。「Lifetime」則依剩餘壽命排序繪製。「Reverse Lifetime」則反轉壽命順序。「View Depth」則依據與攝影機的距離,較近的粒子會蓋在較遠的上面。
「Transform Align」屬性決定粒子的預設旋轉。「Disabled」表示不強制對齊,旋轉取決於處理材質設定。「Z-Billboard」會讓粒子永遠面向攝影機,類似 Standard Material 的「Billboard」屬性。「Y to Velocity」則將每個粒子的 Y 軸對齊其移動方向,適合像子彈、箭矢這類必須朝前的效果。「Z-Billboard + Y to Velocity」則會讓 Z 軸朝向攝影機,Y 軸同時對齊速度方向。
軌跡屬性
粒子軌跡屬性
「Enabled」屬性決定是否啟用粒子軌跡。若要顯示軌跡,請務必勾選此選項。
「Length Secs」屬性設定軌跡的持續時間,數值越高,顯示的軌跡越長。
詳細說明請參考本手冊的 粒子軌跡 章節,瞭解粒子軌跡的運作原理與設定方式。