首页 > 其他 > 详细

UE4_攻击伤害3_受击伤害 喷血 倒地死亡

时间:2020-05-17 23:28:53      阅读:285      评论:0      收藏:0      [点我收藏+]

攻击在不同部位伤害应该是不一样的,比如把人分为 头、胸、腹、胳膊腿等。

之前做了一个简易的判断,只是判断是否打在了头上,这次用宏全做出来。

喷血

首先判断是否打在了胳膊上。输入的name变量是骨骼名称。

技术分享图片

 

 

找到AI的骨骼,找到手臂骨骼的名称s。(手指就不算了,大臂、小臂、手)

技术分享图片

 

 

把这几个都判断一下

技术分享图片

 

 

复制一份,做腿的

先找腿的骨骼名称

技术分享图片

 

 

复制之后修改里面的骨骼名

技术分享图片

 

 

再来一个重要部位检测(包括头、脖子、脊柱01 02、屁股)

技术分享图片

 

技术分享图片

 

 把后面的播放受击动画合成为一个宏或者函数

技术分享图片

 

 记得在输入里面添加一个exec。

 技术分享图片

 

把骨骼名称和攻击方向提升为变量,方便操作

技术分享图片

 

测试,没有问题

 技术分享图片

技术分享图片

 

 

新建一个关于伤害计算和喷血部位的函数,take damage

bone name 传入骨骼名称,用于判断出血位置

damage 伤害量

damage X 伤害倍数

右键输入math,可以自定义一个数学公式,直接在名称里输入就行。

技术分享图片

 

 比如我们修改公式的名称为A*B,打开该公式就是这样的

技术分享图片

 

 

新建两个变量,护甲AP和血量HP。

计算方式,借鉴lol的伤害计算公式,实际伤害=面板伤害*(100/100+实际护甲)。

实际护甲=面板护甲*(1-护甲穿透百分比)-实际穿甲值。

当然先不做穿甲的事,先只考虑伤害和护甲值。至于穿甲、暴击bulabula 以后有空在做。

所以,HP=HP-Damage*(100/100+AP)

技术分享图片

 

 

然后播放喷血动画

用 spawn emitter attached

骨骼就是我们输入的骨骼,mesh就是从左上角拖出来的mesh,emitter template 拖到输入里,在外面改。

技术分享图片

 

 以攻击手臂为例

技术分享图片

这是要添加的喷血动画

技术分享图片

 

 大概是这样,感觉喷血量有点多

技术分享图片

 

 

然后就是调整出血的动画,也可以跟之前一样用一个 随机的布尔值进行select

多试试看哪个效果好,没啥好说的

技术分享图片

 

 

然后加上AI往后退的动画,直接加在take damage后面就行。

做了一点调整,把damage*damage X直接输入了Play Damage Anim,作为判断是否是重击的伤害量

技术分享图片

 技术分享图片

 

 

死亡与肢解

 

死亡

比较HP与0,如果大于0正常播放,小于等于0就先播放受击动画,再返回一个布尔值,代表死亡。

技术分享图片

 

如果 is dead 为true ,在随机0.2-0.7s的延迟后,开启“布娃娃” 物理模拟。

 技术分享图片

 

 “布娃娃”就是系统模拟的,带物理重力的一个东西,比如下面这个摊在地上,其实就是因为AI模型本身的重力导致的。

技术分享图片

 

 

受击动画的进一步修改,加入持续流血的效果

如果伤害>=80,播放被击倒的动画,必定流血

如果伤害<80,>=40,有几率流血

技术分享图片

 

 技术分享图片

 

 用event tick检测,如果在流血,就播放持续流血的动画

技术分享图片

 

5s之内没有受到伤害,就停止流血。

 技术分享图片

 

 

断肢

也可以用个随机布尔值,做概率断肢

技术分享图片

 

UE4_攻击伤害3_受击伤害 喷血 倒地死亡

原文:https://www.cnblogs.com/reluctante1/p/12907387.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!