介紹
從3.1版開始,Godot支援布娃娃實體。Ragdolls依靠實體模拟來建立逼真的程式動畫。它們在許多遊戲中用于死亡動畫。
在本教程中,我們将使用Platformer3D示範來設定布娃娃。
注意
您可以在GitHub或使用素材資源庫下載下傳Platformer3D示範。
設定布娃娃
創造實體骨骼
與引擎中的許多其他功能一樣,有一個節點可以設定布娃娃:PhysicalBone節點。為了簡化設定,您可以PhysicalBone在骨架節點中生成具有“建立實體骨架”功能的節點。
在Godot中打開平台示範,然後在Robi場景中打開。選擇Skeleton節點。骨架按鈕出現在頂部欄菜單上:

單擊它并選擇選項。Godot将為骨骼中的每個骨骼以及銷釘關節生成節點和碰撞形狀,以将它們連接配接在一起:Create physical skeletonPhysicalBone
某些生成的骨骼不是必需的: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的膠囊不妨礙實體模拟: