如果您正在開發 Flutter 3D 遊戲或需要高效能的物理模擬,那麼您一定不能錯過 rapier_physics。今天,我們很高興地宣布 0.2.0 版本正式發佈!
繼 0.1.0 實現了強大的跨平台(含 Web WASM)基礎架構後,0.2.0 版本帶來了開發者期待已久的諸多核心功能,讓 Flutter 的物理模擬能力提升到了一個全新的層次。
🚀 0.2.0 重點更新一覽
1. 全面的關節系統 (Joints System)
這是本次更新最重大的功能。現在你可以輕鬆建立複雜的機械結構與動力學連結:
- 多種關節類型:支援
FixedJoint(固定)、SphericalJoint(球型)、RevoluteJoint(旋轉)、PrismaticJoint(平移) 及RopeJoint(繩索)。 - 馬達控制 (Motors):為旋轉關節與平移關節加入馬達驅動,輕鬆實現車輪轉動或升降機效果。
- 自定義限制:透過
GenericJoint鎖定特定軸向或設置移動限制。
2. 精準的力學控制 API
我們擴展了對剛體 (RigidBody) 的操作能力,讓操控感更加精確:
- Force & Impulse:新增
addForce、addTorque、applyImpulse及其AtPoint變體,讓你能精確施加衝量於物體的特定位置。 - 速度直接控制:透過
setLinearVelocity與setAngularVelocity實現細粒度的運動控制。
3. 高速移動不再「穿牆」:CCD 支援
針對高速移動的小物體(如子彈),0.2.0 加入了 CCD (Continuous Collision Detection)。只需調用 body.setCCD(true),即可防止物體因速度過快而在單個時步內穿透障礙物。
4. 地形與多樣化碰撞體
- Heightfield (高度場):支援從網格數據生成地形碰撞體,非常適合 3D 賽車或冒險遊戲的地圖。
- Cone (圓錐體):新增圓錐體碰撞支援,完善了基礎幾何形狀庫。
5. 更強大的生命週期管理
- 動態移除:現在可以安全地從
RapierWorld中移除剛體、碰撞體或關節。 - 自動清理機制:當你移除一個剛體時,系統會自動清理其關聯的所有碰撞體與關節,防止內存洩漏。
- 雙向導航:透過
body.colliders與body.joints屬性,在代碼中輕鬆追蹤實體間的關係。
6. 底層引擎升級與穩定性提升
- 底層原生引擎升級至 rapier3d v0.32.0。
- Apple 平台優化:針對 iOS 與 macOS 進行了 FFI 符號導出的精簡與優化,確保 Release 版本穩定運行。
🎨 範例展示:牛頓擺 (Newton's Cradle)
在 0.2.0 的範例程式中,我們新增了一個經典的「牛頓擺」演示。透過 RevoluteJoint 與高精度的碰撞計算,完美呈現了動能傳遞的物理之美。此外,範例現在還支援:
- 調試輔助線 (Debug Wireframe) 顯示。
- 實時陰影與物理參數調整面板。
- 一鍵重置物理世界。
🛠️ 快速開始
在 pubspec.yaml 中添加依賴:
dependencies:
rapier_physics: ^0.2.0
📢 結語
rapier_physics 的目標是為 Flutter 社群提供最專業、跨平台且易用的 3D 物解決方案。0.2.0 版本的發佈是我們邁向「生產環境可用」的重要一步。
如果您有任何建議或遇到問題,歡迎前往 GitHub 倉庫 提交 Issue 或 PR。
讓我們一起為 Flutter 打造更動態的 3D 世界!🚀
沒有留言:
張貼留言