游戏开发中的物理之布娃娃系统

介绍

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

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

注意

您可以在GitHub或使用素材资源库下载Platformer3D演示。

设置布娃娃

创造物理骨骼

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

在Godot中打开平台演示,然后在Robi场景中打开。选择Skeleton节点。骨架按钮出现在顶部栏菜单上:

../../_images/ragdoll_menu.png

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

../../_images/ragdoll_bones.png

某些生成的骨骼不是必需的:MASTER例如骨骼。因此,我们将通过移除骨架来清理骨架。

清理骨架

每个PhysicalBone需要模拟的引擎都有性能成本,因此您想要删除所有太小而无法在模拟中起作用的骨骼以及所有实用骨骼。

例如,如果我们采用人形生物,则您不想让每个手指都有骨头。您可以用一根骨头代替整只手,或者一根骨头用于手掌,一根骨头用于拇指,最后一根骨头用于其他四个手指。

删除这些物理的骨头MASTER,waist,neck,headtracker。这为我们提供了优化的骨架,并使控制布娃娃变得更加容易。

碰撞形状调整

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

在这里插入图片描述

关节调整

调整碰撞形状后,布娃娃几乎准备就绪。您只需要调整销钉接头即可获得更好的模拟效果。PhysicalBone节点默认分配有不受约束的销接头。要更改销钉接头,请选择PhysicalBone并在Joint部分中更改约束类型。在那里,您可以更改约束的方向及其限制。

在这里插入图片描述

这是最终结果:

../../_images/ragdoll_result.png

模拟布娃娃

现在可以使用布娃娃了。要开始模拟并播放布娃娃动画,您需要调用该physical_bones_start_simulation方法。将脚本附加到骨架节点,然后在方法中调用_ready方法:

func _ready():
    physical_bones_start_simulation()

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

在这里插入图片描述

您还可以将模拟限制为仅几根骨头。为此,请将骨骼名称作为参数传递。这是部分布娃娃模拟的示例:

在这里插入图片描述

碰撞层和遮罩

确保正确设置碰撞层和蒙版,以免KinematicBody的胶囊不妨碍物理模拟:

../../_images/ragdoll_layer.png

有关更多信息,请阅读碰撞层和遮罩

猜你喜欢

转载自blog.csdn.net/qq_44273429/article/details/111593067