Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
布娃娃系統¶
前言¶
Godot 從 3.1 版本開始支援布娃娃物理。布娃娃依靠物理類比來建立逼真的程式式動畫,它們被用於許多遊戲中的死亡動畫。
在本教學中,我們將使用 Platformer3D 演示來進行布娃娃的設定。
備註
您可以在 GitHub 上下載Platformer3D演示或使用 Asset Library .
設定布娃娃¶
建立物理骨骼¶
與引擎中的許多其他功能一樣,有一個節點可以設定布娃娃:PhysicalBone 節點。為了簡化設定,您可以使用骨架節點中的“建立物理骨架”功能生成 PhysicalBone
節點。
在 Godot 中打開 Platformer 演示專案,然後打開 Robi 場景。選擇 Skeleton
節點。頂部欄功能表上顯示骨架按鈕:
按一下它並選擇 建立物理骨架
選項。Godot 將為骨架中的每個骨骼生成 PhysicalBone
節點和碰撞形狀,並用釘關節將它們連接在一起:
一些生成的骨骼不是必需的:例如 MASTER
骨骼。因此,我們將通過刪除它們來清理骨架。
清理骨骼¶
引擎需要類比的每一個 PhysicalBone
都有性能成本, 所以你要把每一個太小的骨頭都去掉, 以便所有的實用骨頭在模擬中發揮作用.
例如, 如果我們拿一個人形動物來說, 不希望每個手指都有物理骨骼. 可以用一根骨頭代替整個手, 或者用一根骨頭代替手掌, 一根骨頭代替拇指, 最後一根骨頭代替其他四個手指.
刪除這些物理骨骼:MASTER
、waist
、neck
、headtracker
。這樣就有了一個優化的骨架,使其更容易控制布娃娃。
碰撞形狀調整¶
接下來的工作是調整碰撞形狀和物理骨骼的大小, 以配對每個骨骼應該模擬的身體部位.
關節調整¶
一旦你調整了碰撞形狀,布娃娃就差不多準備好了。只需要調整釘關節以獲得更好的模擬效果。PhysicalBone
節點在預設情況下有一個不受限制的釘關節。要改變釘關節,請選擇 PhysicalBone
並在 Joint
部分改變約束型別。在那裡,你可以改變約束的方向和限制。
這是最終效果:
模擬布娃娃¶
布娃娃現在可以使用了。要開始模擬並播放布娃娃動畫,您需要呼叫 physical_bones_start_simulation
方法。將腳本附加到骨架節點並在 _ready
方法中呼叫該方法:
func _ready():
physical_bones_start_simulation()
要停止模擬, 請呼叫 physical_bones_stop_simulation()
方法.
您還可以將模擬限制為僅幾個骨骼。為此,請將骨骼名稱作為參數傳遞。這是部分佈娃娃模擬的一個範例:
碰撞層與遮罩¶
確保正確設定碰撞層和遮罩,這樣 KinematicBody
的膠囊不會妨礙物理類比:
更多有關光照烘焙的資訊,請參考 doc_baked_lightmaps 。