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

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

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

喷血

首先判断是否打在了胳膊上。输入的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之内没有受到伤害,就停止流血。

 

 

 

断肢

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

 

posted @ 2020-05-17 22:28  vantablack  阅读(2365)  评论(0编辑  收藏  举报