• 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之内没有受到伤害,就停止流血。

     

    断肢

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

  • 相关阅读:
    Usb key插入检测,并动态获取CSP
    PsGetVersion
    BCDEDIT 启动配置数据存储编辑器
    fatal error LNK1103: debugging information corrupt; recompile module 解决
    Smart Card(windows)
    findwindow 后postmessage点解按钮
    核心层API分类
    64位下SetWindowLong时的参数GWL_WNDPROC undeclared identifier未定义的错误
    安装SQL SERVER 2008时出现了SQL SERVER 2005 Express Tool Installed 的错误
    win7重置密码的方法
  • 原文地址:https://www.cnblogs.com/reluctante1/p/12907387.html
Copyright © 2020-2023  润新知