Unity 2D 粒子模擬系統功能總覽

🎯 核心功能一覽
1. 粒子管理 (ParticleManager.cs
)
CreateParticle(position, velocity, mass):集中建立粒子,配置
Rigidbody2D、質量、初始速度
根據質量自動調整大小(
scale ∝ mass^(1/3)
)依質量著色(藍→綠→黃→橙→紅 5 色)
Label 標籤:每顆粒子上方動態顯示其編號、位置與速度
2. 萬有引力與碰撞 (GravitationalSystem.cs
)
ApplyForces():每幀迴圈計算所有粒子對的引力
引力公式:
F = G·m₁·m₂ / r²
支援距離上限與開關控制
合併(Merge):當距離 <
mergeDistance
且相對速度低時- 動量守恆 → 合併成單一粒子、質量加總、速度重算
分裂(Fragment):當距離 <
mergeDistance
且相對速度高時隨機分割 → 保持總質量、動量與能量守恆的多碎片爆炸
支援最小質量限制與碎片數上限
3. 能量監控 (EnergyTracker.cs
)
TrackEnergy(deltaTime):每 0.5 秒累積計算系統總動能
動能公式:
K = ½·m·v²
,遍歷所有粒子求和即時顯示:
TMP_Text
顯示當前總動能數值UI 容器產生柱狀圖,動態呈現歷史能量變化
4. UI 控制面板 (SimulationUIManager.cs
& SimulationUIBindings.cs
)
遠距離引力開關(Toggle)
最遠作用距離滑桿(Slider)
粒子數量顯示(Text)
暫停/繼續、重置模擬 按鈕
時間倍率調整(Slider + 顯示倍率文字)
5. 日誌輸出 (LogExporter.cs
)
InitializeLogFile():依時間命名檔案 →
particle_log_YYYYMMDD_HHMMSS.txt
LogParticleStates()(每秒):
- 輸出「時間、編號、位置、速度」到畫面與檔案
AppendCollision(message):合併/分裂事件文字紀錄,隨後一起寫入檔案
6. 系統統合(SimulationController.cs
)
Start():初始化日誌、綁定各模組、根據輸入欄位產生初始粒子
Update():
同步 UI 狀態 → 更新
ignoreCutoff
、gravityCutoffDistance
顯示粒子數量
呼叫
ApplyForces()
執行物理模擬呼叫
TrackEnergy()
更新能量圖表每秒呼叫
LogParticleStates()
輸出日誌
ResetSimulation()、PauseSimulation()、SetTimeScale() → 提供一鍵重置、暫停與速度倍率控制
🛠 後續擴充方向
粒子壽命管理:自動隨時間銷毀老舊粒子
碰撞動畫效果:在合併/分裂時加入粒子爆裂粒子特效
GPU 計算:利用 Compute Shader 或 DOTS 提升萬顆粒子效能
資料匯出:將能量與粒子數變化導出 CSV,做外部分析
自訂主題 UI:更換顏色、字體、版型,打造專屬風格
Subscribe to my newsletter
Read articles from 郭俊鑫 directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
