3D 粒子吸引器
粒子吸引器是會對其範圍內所有粒子施加力的節點。它們會根據力量的方向,將粒子拉近或推遠。吸引器共有三種型態:GPUParticlesAttractorBox3D、GPUParticlesAttractorSphere3D 與 GPUParticlesAttractorVectorField3D。你可以在執行時動態建立它們,並透過遊戲程式碼變更其屬性,甚至可以進行動畫化與組合,打造複雜的吸引效果。
備註
目前 2D 粒子系統尚未實作粒子吸引器功能。
若要使用吸引器,首先需在 ParticleProcessMaterial 上啟用 Attractor Interaction 屬性。所有需要響應吸引器的粒子系統都必須這麼設定。就像 Godot 中大多數屬性一樣,你也可以在執行時動態更改這個設定。
通用屬性
吸引器通用屬性
所有吸引器都擁有一些共同屬性,這些屬性位於屬性面板的 GPUParticlesAttractor3D 區塊中。
「Strength」(強度)控制吸引器施加力量的強弱。正值會將粒子拉向吸引器中心,負值則會將粒子推離。
「Attenuation」(衰減)決定吸引器影響區域內力量的遞減方式。每個粒子吸引器都有一個邊界,其力量在邊界處最弱、中心最強。邊界外的粒子完全不受影響。衰減曲線則決定力量隨距離遞減的方式。若為直線,代表力量與距離成正比:若粒子位於中心與邊界的中間位置,吸引強度則為中心的一半。不同的曲線形狀會決定粒子加速靠近吸引器的速度。
強度隨距離變化的方式:左圖為隨距離線性變化,中間為邊界變化快、中心變化慢,右圖則為邊界變化慢、中心變化快。
「Directionality」(方向性)屬性會影響粒子被吸引的方向。當數值為 0.0 時,粒子會被吸向吸引器中心;設為 1.0 時,則粒子會沿吸引器的本地 -Z 軸方向被吸引。你也可以旋轉吸引器來改變全域方向。如果「Strength」為負值,則粒子會沿 +Z 軸方向被吸引。
無方向性(左)與完全方向性(右)的比較。可注意粒子如何沿著吸引器的本地 Z 軸移動。
「Cull Mask」屬性決定哪些粒子系統會受到吸引器影響,這是根據每個系統的 可見層 來判斷。只有在吸引器的遮罩有啟用該粒子系統可見層時,該系統才會受到影響。
警告
目前 GPU 粒子吸引器的「Cull Mask」功能在 Godot 4.0 無法正常運作,詳情請見 已知問題。修正後將會更新本文件。
方塊吸引器
節點清單中的方塊吸引器
方塊吸引器具有方形的影響範圍,可透過「Extents」(範圍)屬性調整其大小。Extents 指的是邊長的一半,因此 (X=1.0, Y=1.0, Z=1.0) 會產生一個每邊長 2 公尺的影響區域方塊。
要建立方塊吸引器,請在場景中新增子節點,並從節點清單選擇 GPUParticlesAttractorBox3D。你可以為方塊吸引器製作動畫,或將其綁定於移動節點,以創造更動態的效果。
當方塊吸引器的強度設為負值時,移動時會將粒子場分開。
球體吸引器
節點清單中的球體吸引器
球體吸引器具有球形的影響區域,可透過「Radius」(半徑)屬性調整大小。方塊吸引器不一定是正方體,但球體吸引器只能是球形,無法單獨設定寬度或高度。如果想讓球體吸引器變成長條狀,必須調整吸引器節點(Node3D)中的「Scale」(縮放)屬性。
要建立球體吸引器,請在場景中新增子節點,並從節點清單選擇 GPUParticlesAttractorSphere3D。你也可以為球體吸引器製作動畫,或將其綁定於移動節點,以創造更動態的效果。
當球體吸引器的強度設為負值時,移動時會將粒子場分開。
向量場吸引器
節點清單中的向量場吸引器
向量場是一個三維區域,內部以網格分布多個向量。網格密度決定向量的數量與間隔,每個向量都有其方向。這些向量可以完全隨機,也可以排列出有特定規律或路徑的形狀。
當粒子與向量場互動時,會根據最近的向量改變移動方向。隨著粒子接近下一個向量時,方向也會跟著變化。粒子的速度則取決於所對應向量的長度。
與方塊吸引器類似,向量場吸引器也有方形的影響區域,可以用「Extents」屬性調整大小,(X=1.0, Y=1.0, Z=1.0) 會產生一個每邊長 2 公尺的方塊。其「Texture」屬性需要指定一個 3D 貼圖,每個像素的顏色會被解讀成一個向量的方向與長度。
備註
將貼圖作為向量場時,需要注意以下兩種對應方式:
貼圖座標會對應到吸引器的邊界。下圖說明了貼圖的哪些部分會對應到向量場區域的哪個區塊。例如,貼圖下半部會影響到向量場吸引器的上半部,因為貼圖 UV 空間的
+Y向下,而 Godot 世界空間的+Y向上。像素的顏色值會對應到空間中的方向向量。下圖有詳細說明。由於每個軸線粒子都可雙向移動,顏色的下半段代表負方向,上半段則代表正方向。例如黃色像素
(R=1,G=1,B=0)代表向量(X=1,Y=1,Z=-1),而中性灰(R=0.5,G=0.5,B=0.5)則代表沒有移動。
要建立向量場吸引器,請在場景中新增子節點,並從節點清單選擇 GPUParticlesAttractorVectorField3D。你可以為吸引器製作動畫,或將其綁定於移動節點,以創造更豐富的動態效果。
小訣竅
如果你沒有外部工具來製作向量場貼圖,可以使用帶有色階(Color Ramp)的 NoiseTexture3D 作為向量場貼圖,並透過調整色階來控制各軸向的影響程度。
兩個粒子系統都受到同一個向量場吸引器影響。點此下載 3D 貼圖。