布娃娃系统
简介
从3.1版本开始,Godot支持布娃娃物理.布娃娃依靠物理模拟来创建逼真的程序动画,它们被用于许多游戏中的死亡动画.
在本教程中,我们将使用Platformer3D演示来设置布娃娃.
注解
您可以在 GitHub 上下载Platformer3D演示或使用 Asset Library .
设置布娃娃
创建物理骨骼
与引擎中的许多其他功能一样,有一个节点可以设置一个布娃娃: PhysicalBone 节点. 为了简化设置,您可以使用骨架节点中的”创建物理骨架”功能生成 PhysicalBone
节点.
在Godot中打开平台演示,然后在Robi场景中打开. 选择 Skeleton
节点. 顶部栏菜单上显示骨架按钮:
单击它并选择 创建物理骨架
选项. Godot将为骨架中的每个骨骼生成 PhysicalBone
节点和碰撞形状,并将针脚连接在一起以将它们连接在一起:
一些生成的骨骼不是必需的:例如 MASTER
骨骼. 因此,我们将通过删除它们来清理骨架.
清理骨骼
引擎需要模拟的每一个 PhysicalBone
都有性能成本,所以你要把每一个太小的骨头都去掉,以便所有的实用骨头在模拟中发挥作用.
例如,如果我们拿一个人形动物来说,不希望每个手指都有物理骨骼.可以用一根骨头代替整个手,或者用一根骨头代替手掌,一根骨头代替拇指,最后一根骨头代替其他四个手指.
删除这些物理骨骼: MASTER
, waist
, neck
, headtracker
.这样就有了一个优化的骨架,使其更容易控制布娃娃.
碰撞形状调整
接下来的任务是调整碰撞形状和物理骨骼的大小,以匹配每个骨骼应该模拟的身体部位.
关节调整
一旦你调整了碰撞形状,布娃娃就差不多准备好了.只需要调整钉关节以获得更好的模拟效果. PhysicalBone
节点在默认情况下有一个不受限制的钉关节.要改变钉关节,请选择 PhysicalBone
并在 Joint
部分改变约束类型.在那里,你可以改变约束的方向和限制.
这是最终效果:
模拟布娃娃
布娃娃现在可以使用了. 要开始模拟并播放布娃娃动画,您需要调用 physical_bones_start_simulation
方法. 将脚本附加到骨架节点并在 _ready
方法中调用该方法:
GDScript
func _ready():
physical_bones_start_simulation()
要停止模拟,请调用 physical_bones_stop_simulation()
方法.
您还可以将模拟限制为仅几个骨骼. 为此,请将骨骼名称作为参数传递. 这是部分布娃娃模拟的一个示例:
碰撞层与遮罩
确保正确设置碰撞层和遮罩,这样”KinematicBody”的胶囊不会妨碍物理模拟:
有关更多信息,请阅读 物理介绍.