在僵尸蓝图里加上之前做好的接口
原先接口的样子:
僵尸受击与两方面有关
1.受击的部位
2.受击的方向角度
骨骼重定向(换新的皮肤)
UE4:点对点(骨骼对骨骼)
UE5:线对线(一整条对一整条)
选中新的模型,右键骨骼-》Assign Skeleton
选择要重定向的骨架,接受
再一次选择点击新皮肤,右键创建并制定
自动生成的碰撞还需要手动调整一下
之后就可以直接用BP_Zombie换上刚刚的皮肤了
运用之前的 获得骨骼的名称和序号 步骤打印出骨骼名字和序列号(因为要开始做射击不同骨骼的交互)。做法大同小异,可以参考:90天入门UE引擎开发--学习日记(55/100)_不要积累问题的博客-优快云博客在widget组件的图表里新建一个变量AI,其中的HealthPercent变量与血条的Percent绑定。新建导航网格体边界体积,拖入场景,放大,铺满整个场景,快捷键P可以出现绿色。对BP_AI1蓝图里的Health变量设置广播方式为RepNotify。cable末端位置设置为0,cable对pawn的碰撞属性设置为忽略。先制作AI的血条 WB_AI_HealthBar。通过在BP_AI1写下列函数可以获得骨骼的序列号。在BP_AI1里新建一个函数Set Damage。具体系数参考官方文档↓↓↓。https://blog.youkuaiyun.com/weixin_42229060/article/details/127757844?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127757844%22%2C%22source%22%3A%22weixin_42229060%22%7D
方法2:ALS-运动系统解构-优快云博客
里的 角色替换
击中骨骼部位 决定 僵尸反馈的状态
头:Hit Death
手:模拟物理,瘫痪
腿:Crawl 状态
躯干:前身Knock Back;后背Stand Hit To Crawl
利用枚举分类
新建一个枚举EBodyParts
然后再僵尸蓝图里新建一个枚举类变量
射击身体的交互
给ApoplyHit函数新建一个输入变量Impulse
这样我们就可以接受Be Hit事件传进来的Impulse变量
在ABP_Zombie01中新建一个函数(输入变量如下)
Calculate Direction函数
关闭枪的multiline trace?
将僵尸的 胶囊碰撞体 碰撞属性设置为 对Camera和MyChannel 忽略,避免影响两种枪的射线检测
前方开枪,击退
挑选一个合适的被击退动画(改成根运动,保存),创建蒙太奇 。蒙太奇动画中,把混入混出时间都改为0。
动画蓝图中需要建立默认插槽,才能调用蒙太奇动画
书写蓝图:
打到腿时,也是摔倒
*布娃娃系统
(*布娃娃系统:虚幻引擎动画姿势快照 | 虚幻引擎5.3文档 (unrealengine.com)
19高级运动系统解构-姿势快照与布娃娃系统_哔哩哔哩_bilibili )
找到CrawlToStand动画序列,在通知轨道右键添加一个通知CrawlEnd
调用通知!
在黑板里新建一个枚举
sequence Crawl调用装饰黑板变量
添加黑板键,并且在结果发生变化(变成Crawl),中止规则设置为终止 低优先级的
给序列的条件改名字,整理一下
在僵尸蓝图里,初始化 ABP Zombie01与Aicontroller Zombie01,得到Aicontroller Zombie01变量
把Crawl状态传递给黑板
整理成函数SetBBMoveState (输出的枚举变量重命名为MoveState)
制作死亡状态
(ps:也可以直接在死亡的动画蒙太奇末端设立一个循环播放,让僵尸们倒地之后就不再站起来,死的透透的
)
从蒙太奇动画里截取出一个合适的倒在地死亡的动画
拷贝出来的右键截取一下 (根动画勾选,保存)
状态机
左右的受击动画不要设置根运动(不然效果不明显)
打到头时,死亡
打到手臂时,瘫痪
将Rotate to FaceBB改为系统自带Move to,可以修改AI人遇到障碍物不会转弯的bug。
断开Rotate to face BB entry
阵营功能
解决爆头死亡之后,继续打还会有反应的bug
避免穿透射线连续触发:
根据不同的伤害类型受到的反馈
新建一个枚举EDamageType
在接口里添加一个DamageType变量
编译保存
在OnFire的动画上添加定时粒子效果
主动更改枪的伤害类型