学习UE4动画蓝图:使用“布娃娃”系统制作死亡效果
目标
“布娃娃”(ragdoll)指让角色骨骼随物理驱动而非动画师制作的动画序列。很常见的一个使用场合是:
角色受到了致命伤害而失去知觉,于是身体的各个骨骼便由物理来模拟驱动。
本篇的目标就是使用此系统让角色达成死亡的动作效果。我的工程上接《学习UE4动画蓝图:使用Socket(插槽)》,但是直接使用引擎的第三人称模板创建一个新工程是最快看到效果的办法(只需要2分钟)。
在学习过程中主要参考的是《基于物理的动画 | Unreal Engine Documentation》
1. 角色蓝图的逻辑
打开角色蓝图,添加逻辑:
按下P键
表示触发死亡,之后运行的逻辑:
-
Set All Bodies Simulate Physicis
,设置是否启用物理模拟,这里参数是true。还有一个Set All Bodies Below Simulate Physicis
也是同样的功能,只不过目标是指定骨骼以及子骨骼。 -
Set All Bodies Physicis Blend Weight
,设置物理模拟的权重,这里参数是1.0.还有一个Set All Bodies Physicis Below Blend Weight
也是相同的功能,只不过目标是指定骨骼以及子骨骼。 -
Set Collision Enabled
设置碰撞,如果不做这一步角色会陷入地下。
效果
如果是在第三人称模板中,则可以直接看到效果
2*. 配置角色的物理资源
在我的工程中,虽然也可以触发物理:
但是可以看到:很多关节的旋转已经超出了一个正常人类能够达到的旋转了。这是由于角色的物理资源没有配置所致。
打开角色的物理资源,点模拟就可以看到当前的配置并不是真实人类应有的状态:
正确的做法,应该要对其进行配置,例如限制一些关节的旋转范围,详细的操作可看UE4官方文档《物理资源编辑器 | Unreal Engine Documentation》中的介绍。
但我这里为了省事,我想尝试从第三人称模板中将物理资源拷贝过去:
从第三人称模板中拷贝角色的物理资源
右键第三人称模板中的角色物理资源点“迁移”。骨架网格体和骨架是必须保留的,而其他的资源比如材质是不需要迁移过去的。
之后我的工程中在相同路径下可以看到他们。由于之前我的工程中的骨架网格体就是由其导出的,所以名字是重复的,即:现在这三份资源在我的工程中有同名的资源,需要注意。
打开我的原工程中的骨架网格体资源,将其中的物理资源替换成刚刚导入的那一版:
随后便可以看到角色死亡表现正常了:
最后删除掉多余的资源:
- 我的工程中原来的物理资源
- 新导入的骨骼网格体
- 新导入的骨架