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 粒子吸引器
粒子吸引器是會對其範圍內所有粒子施加力的節點。它們會根據力量的方向,將粒子拉近或推遠。吸引器共有三種型態:GPUParticlesAttractorBox3D、GPUParticlesAttractorSphere3D 與 GPUParticlesAttractorVectorField3D。你可以在執行時動態建立它們,並透過遊戲程式碼變更其屬性,甚至可以進行動畫化與組合,打造複雜的吸引效果。
備註
目前 2D 粒子系統尚未實作粒子吸引器功能。
若要使用吸引器,首先需在 ParticleProcessMaterial 上啟用 Attractor Interaction 屬性。所有需要響應吸引器的粒子系統都必須這麼設定。就像 Godot 中大多數屬性一樣,你也可以在執行時動態更改這個設定。
通用屬性
吸引器通用屬性
所有吸引器都擁有一些共同屬性,這些屬性位於屬性面板的 GPUParticlesAttractor3D 區塊中。
「Strength」(強度)控制吸引器施加力量的強弱。正值會將粒子拉向吸引器中心,負值則會將粒子推離。
「Attenuation」(衰減)決定吸引器影響區域內力量的遞減方式。每個粒子吸引器都有一個邊界,其力量在邊界處最弱、中心最強。邊界外的粒子完全不受影響。衰減曲線則決定力量隨距離遞減的方式。若為直線,代表力量與距離成正比:若粒子位於中心與邊界的中間位置,吸引強度則為中心的一半。不同的曲線形狀會決定粒子加速靠近吸引器的速度。
強度隨距離變化的方式:左圖為隨距離線性變化,中間為邊界變化快、中心變化慢,右圖則為邊界變化慢、中心變化快。
「Directionality」(方向性)屬性會影響粒子被吸引的方向。當數值為 0.0 時,粒子會被吸向吸引器中心;設為 1.0 時,則粒子會沿吸引器的本地 -Z 軸方向被吸引。你也可以旋轉吸引器來改變全域方向。如果「Strength」為負值,則粒子會沿 +Z 軸方向被吸引。
無方向性(左)與完全方向性(右)的比較。可注意粒子如何沿著吸引器的本地 Z 軸移動。
「Cull Mask」屬性決定哪些粒子系統會受到吸引器影響,這是根據每個系統的 可見層 來判斷。只有在吸引器的遮罩有啟用該粒子系統可見層時,該系統才會受到影響。
方塊吸引器
節點清單中的方塊吸引器
方塊吸引器具有方形的影響範圍,可透過「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 貼圖。