布娃娃系统

介绍

从3.1版开始,Godot支持布娃娃物理。碎布车依靠物理模拟来创建逼真的程序动画。它们在许多游戏中都被用于死亡动画。

在本教程中,我们将使用Platformer3D演示来设置布娃娃。

注解

您可以将Platformer3D演示下载到 GitHub 或使用 Asset Library .

设置布娃娃

创建物理骨骼

与引擎中的许多其他功能一样,也有一个节点来设置布娃娃: PhysicalBone 节点。为了简化设置,可以生成 PhysicalBone 在骨架节点中具有“创建物理骨架”功能的节点。

打开Godot的platformer演示,然后打开robi场景。选择 Skeleton 节点。一个骨架按钮出现在顶栏菜单上:

../../_images/ragdoll_menu.png

单击并选择 Create physical skeleton 选项。Godot将产生 PhysicalBone 骨骼中每个骨骼的节点和碰撞形状以及将它们连接在一起的销关节:

../../_images/ragdoll_bones.png

一些生成的骨骼不需要: MASTER 比如骨头。所以我们要通过移除它们来清理骨骼。

清理骨架

PhysicalBone 引擎需要模拟有一个性能成本,因此您需要删除所有太小而无法在模拟中产生差异的骨骼,以及所有实用工具骨骼。

例如,如果我们取一个人形,你就不希望每个手指都有物理骨骼。你可以用一根骨头来代替整只手,或者一根用于手掌,一根用于拇指,最后一根用于其他四个手指。

移除这些物理骨骼: MASTERwaistneckheadtracker . 这给了我们一个优化的骨架,使它更容易控制布娃娃。

碰撞形状调整

下一个任务是调整碰撞形状和物理骨骼的大小,以匹配每个骨骼应该模拟的身体部分。

../../_images/ragdoll_shape_adjust.gif

接头调整

一旦你调整了碰撞形状,你的布娃娃就快准备好了。您只需要调整销接头以获得更好的模拟。 PhysicalBone 默认情况下,节点有一个未约束的销节点。要更改销接头,请选择 PhysicalBone 并更改 Joint 第节。在这里,您可以更改约束的方向及其限制。

../../_images/ragdoll_joint_adjust.gif

这是最终结果:

../../_images/ragdoll_result.png

模拟布娃娃

布娃娃现在可以用了。要启动模拟并播放布娃娃动画,需要调用 physical_bones_start_simulation 方法。将脚本附加到骨架节点并在 _ready 方法:

func _ready():
    physical_bones_start_simulation()

要停止模拟,请调用 physical_bones_stop_simulation() 方法。

../../_images/ragdoll_sim_stop.gif

也可以将模拟限制为仅几个骨骼。为此,将骨骼名称作为参数传递。以下是部分布娃娃模拟的示例:

../../_images/ragdoll_sim_part.gif

碰撞层和遮罩

确保正确设置碰撞层和遮罩,以便 KinematicBody 太空舱不会妨碍物理模拟:

../../_images/ragdoll_layer.png

有关详细信息,请阅读 物理导论