想必大家玩游戏肯定有见过敌人被分解的血腥场面,头被砍掉了,手脚被砍掉了,然后狂飙血哈哈哈。
今天就带大家来实现个角色肢解的案例。
创建项目
首先创建一个第一人称模板项目
下载资源
打开mixamo网站,下载咱们需要的模型和动画。
首先登录,然后选择角色,搜索zombie,选择一个自己喜欢的僵尸吧。
模型下载完以后还需要下载几个动画。
idle动画
walk动画
crawl动画
sleep idle动画
好了,咱们需要的动画都下载好了。
Blender切割角色
打开Blender,删除默认的Cube,导入T-pos那个FBX。
进入编辑模式
使用切分工具
首先切割右手,然后导出。
然后按照这种方法分别切左手、左右脚和上半身。
导入资源
打开刚开始创建的虚幻项目,新建一个Zombie文件夹,然后在它里面创建Animations,Materials和Textures文件夹。
导入我们刚刚下载的模型和动画。
首先导入了那个T-pos模型
然后导入除sleep_idle的所有动画。
最后导入sleep_idle,这玩意需要旋转一下。
在Animations文件夹里面创建个Parts文件夹来存放部分的肢体。
打开僵尸的静态网格体以后会发现这玩意是透明的,咱们找到材质改一下。
把上面三个材质的混合模式都改为Masked。
这个时候僵尸就正常了
Character
创建一个Character类,命名为BP_Zombie。
打开BP_Zombie,把Mesh的静态网格体赋值为Body,然后添加左右手和脚。
放入场景看看效果。
使用动画看看效果
Construction Script
我们先给僵尸添加动画,之后再来设置BP_Zombie类。
动画混合
咱们创建两个动画混合,第一个是僵尸从Idle到Walk,还有一个就是Idle到Crawl。
动画蓝图
创建一个动画蓝图,命名为ABP_Zombie。
事件图表
打开创建的动画蓝图,首先就是使用Event Blueprint Initialize Animation获取僵尸。
Speed和Crawling都是通过僵尸角色类获取到的变量,控制着应该怎么播放动画。
动画图表
动画设置完了再来看Character。
Character
把刚刚创建设置好的动画蓝图给它赋值,这个时候运行就可以看见僵尸在Idle动画状态了。
在僵尸角色蓝图里面,
GetHitComponent函数主要功能是获取击中了僵尸那个部分。
DetachComponent自定义事件主要是肢解僵尸,如果打中的是脚还需要改变动画,把Crawling设置为True,动画蓝图那边还记得?会改变动画变为爬行。
OnProjectileHit自定义事件主要是判断是否打中肢解部分
下面这部分主要是控制僵尸朝着玩家运动(场景里面记得添加一个NavMeshBoundsVolume)。
子弹蓝图那边主要是调用OnProjectileHit。
注意Mesh设置一个整体的物理资产,然后Mesh和RL等4个组件都设置碰撞为Ragdoll了。
结尾
血腥的特效和音效就不加了,大家可以自己添加。