虚幻角色肢解

想必大家玩游戏肯定有见过敌人被分解的血腥场面,头被砍掉了,手脚被砍掉了,然后狂飙血哈哈哈。

今天就带大家来实现个角色肢解的案例。

创建项目

首先创建一个第一人称模板项目

fe4ed250ee15a5931143893e74060b28.jpeg

下载资源

打开mixamo网站,下载咱们需要的模型和动画。

首先登录,然后选择角色,搜索zombie,选择一个自己喜欢的僵尸吧。

58c6a8d0931882f7a5d9a6e3b4d72241.jpeg

fac1fbf22f34ab9c23c9ac3734b139bb.jpeg

模型下载完以后还需要下载几个动画。

idle动画

acf93241c4e16200c6fb44a244a21266.jpeg

abae05d580c5ce4cd4be66aff3a29ae7.jpeg

walk动画

42ec27b6efbd1582c42b2aeab1037064.jpeg

0c4a0de6d137bdb28a72fd26b2a26bc0.jpeg

crawl动画

e83522dacff3eb7340d55ce3b7bffa52.jpeg

fe9a1fb151494d543f5e3dea33eb32b5.jpeg

sleep idle动画

0fa70bc30d1355ab691ada1219dc7ec9.jpeg

97e6e947be7ea9aae6e2e3efad912cb8.jpeg

好了,咱们需要的动画都下载好了。

Blender切割角色

打开Blender,删除默认的Cube,导入T-pos那个FBX。

c05b2cbd9b8937ffa3a8553b60e997b3.jpeg

49a945f6467a6aca9a89dc27bf2cc57c.jpeg

进入编辑模式

f95abe0c1f1f534344be5b384047c4e1.jpeg

使用切分工具

dd991b22055251aa3066d4dd72dfe1c4.jpeg

首先切割右手,然后导出。

2a52f7fca993a1791f34a60de81c6e88.jpeg

然后按照这种方法分别切左手、左右脚和上半身。

导入资源

打开刚开始创建的虚幻项目,新建一个Zombie文件夹,然后在它里面创建Animations,Materials和Textures文件夹。

e7e1561b5f0d9c2ff57e737257184ca3.jpeg

导入我们刚刚下载的模型和动画。

首先导入了那个T-pos模型

8b75f90ef6430860f35c0286bc7fa9fb.jpeg

然后导入除sleep_idle的所有动画。

bc25b396a10551fdbb2bbaab7eccc15f.jpeg

最后导入sleep_idle,这玩意需要旋转一下。

f21e90756d012d65aea8baf45fd8adf4.jpeg

在Animations文件夹里面创建个Parts文件夹来存放部分的肢体。

4ab7d08de2ceb068c9d18bd23ad87b9b.jpeg

b8bf5d6c0ea07a110aca77fd043798b9.jpeg

打开僵尸的静态网格体以后会发现这玩意是透明的,咱们找到材质改一下。

65761cdc62eada2c3933642a5d04a595.jpeg

把上面三个材质的混合模式都改为Masked。

b611a4d6caeb3abd46c324e7cce59528.jpeg

这个时候僵尸就正常了

fc70c242fb5dbaca8be2aba0beb8f4dc.jpeg

Character

创建一个Character类,命名为BP_Zombie。

10d33732b1dc48366c8e5ba51e98db96.jpeg

打开BP_Zombie,把Mesh的静态网格体赋值为Body,然后添加左右手和脚。

c339eec35717188f86ac7a9789c4c2f9.jpeg

放入场景看看效果。

d3cf9775294f787709f7ed9a40f7d425.jpeg

使用动画看看效果

40241d083a7d83645a810d0aff031fce.jpeg

Construction Script

使用模块化角色

633c9f59ff7cb54d9824e9aed6526887.jpeg

我们先给僵尸添加动画,之后再来设置BP_Zombie类。

动画混合

咱们创建两个动画混合,第一个是僵尸从Idle到Walk,还有一个就是Idle到Crawl。

3b463e969659371156bf7812c9c11e7d.jpeg

cf3bafc74bcaab3ceeca75da52e0c29f.jpeg

动画蓝图

创建一个动画蓝图,命名为ABP_Zombie。

578becbbbe2db6f7f2caac14178d37b1.jpeg

3b1ffebdf292d484824b229a7756192a.jpeg

事件图表

打开创建的动画蓝图,首先就是使用Event Blueprint Initialize Animation获取僵尸。

04df2c912ac7d8b4024c3c20fc750d0a.jpeg

Speed和Crawling都是通过僵尸角色类获取到的变量,控制着应该怎么播放动画。

2ae4d716d5728109632df28b4a14ff3a.jpeg

动画图表

f0c6700c3a78bae0dc5ed9465eb1604b.jpeg

d5fb5f9957bab71fcb628059b666eef0.jpeg

58d928d314045ee759f4d465068929f6.jpeg

aabd64e6335f4a02e4cf83ab5b3404da.jpeg

daa782e4469d3de1a38540e92c4d7a22.jpeg

11772550fa74d376f453459928f6dc90.jpeg

动画设置完了再来看Character。

Character

ee827d387f44001791eadc4b7589b8fd.jpeg

把刚刚创建设置好的动画蓝图给它赋值,这个时候运行就可以看见僵尸在Idle动画状态了。

778f3d831db8ba3aef50d6635606979c.jpeg

在僵尸角色蓝图里面,

GetHitComponent函数主要功能是获取击中了僵尸那个部分。

d8a7ab647300b5230fe302d3b84097cb.jpeg

DetachComponent自定义事件主要是肢解僵尸,如果打中的是脚还需要改变动画,把Crawling设置为True,动画蓝图那边还记得?会改变动画变为爬行。

d9bcf54c0cd59a1bc4e673c3f7e409dc.jpeg

OnProjectileHit自定义事件主要是判断是否打中肢解部分

5608ed189f625aeb91ffa2f5c700f82b.jpeg

下面这部分主要是控制僵尸朝着玩家运动(场景里面记得添加一个NavMeshBoundsVolume)。

fe280d7210347b58baf8989429b5c114.jpeg

子弹蓝图那边主要是调用OnProjectileHit。

637775dd898c2ecd521eec0345fa40c8.jpeg

注意Mesh设置一个整体的物理资产,然后Mesh和RL等4个组件都设置碰撞为Ragdoll了。

fe31c72c95b15339367ed437f1043fd6.jpeg

结尾

血腥的特效和音效就不加了,大家可以自己添加。

UE5Examples

猜你喜欢

转载自blog.csdn.net/weixin_44350205/article/details/126761868