zoukankan      html  css  js  c++  java
  • UE4_简易AI_Ai攻击

    判断Ai发现玩家后的距离,如果大于300就执行正常的移动速度改变,如果小于300就随机一个出拳的动画。

     这个出现了bug,Ai一直抽搐,原因是小于300时这个节点一直在从头执行,因为最开始的触发事件是event tick,所以加一个Can Attack

    在Ai的挥拳动画加一个动画通知,

     

     

    依然有个bug,就是AI出拳的时候我们打他一下,他会直接切换到受击动画,导致他自己的出拳动画播放不到AiAttackEnd上,导致他自己的CanAttack永远为false,为了解决这个bug,只好把AI的受击动画的最后都加上通知AiAttackEnd。

    加完之后,第三个bug。出现的原因应该是,我们恰好在AttackEnd上攻击,导致受击动画瞬间被新的攻击动画覆盖掉。

    这个出现概率不是很高,先不管他。

    还有一个bug,AI会一直攻击,并在攻击间隙一直往前走。要把这个往前走的取消掉。(之前设置的300太多了,重新设置为120.如果<120了,那就原地打拳停止移动)

    然后做Ai攻击我们的伤害和动画判定

     给Ai加一个Arrow,当他攻击的时候就从Arrow里发射一条射线

     找到AI攻击的俩动画蒙太奇,创建新的动画通知AiAttackFront

    从Arrow为起点,发射一条长度为120,半径为10的attack射线。 

     然后把玩家player的碰撞预设的attack打开,这样就可以被这条射线碰到了

     如果AI发射的射线碰到物体了,就把攻击的信息发给之前做的蓝图接口DamagePass

     同时我们玩家的蓝图也得继承一下该BPI

    测试一下有没有问题

     暂时没有问题,数据都能传进来。

    因为不同武器受击的时候动画是不一样的,所以我们要在WeaponDataTable里面加一项,手持该武器时的受击动画。

    找到相应的动画,别忘了在最后加上AttackEnd,跟Ai一样挨揍需要重置一下普攻。

     然后写我们挨揍的逻辑

    先判断是否手持武器,如果有武器,就找到武器的相应受击动画,并播放

    然后做一个,玩家挨打后向后强制位移的逻辑

    首先得在DamagePass里传过来,

    最后用一个launch character发射玩家,方向和力大小都是刚刚新添加的Force Direction。

     

    在AI的传Damage信息那里,把Arrow的方向作为力的方向,再乘一个数值作为力的大小,就得到了我们需要的力。

    然后先把Force默认的改成130

     

     暂时没有问题,下面做玩家的血量和减少

    跟AI一样的计算公式

     然后做一个UI,当我们生命值过低时屏幕虚化

    添加一个背景虚化,让他覆盖整个屏。并把它设置为一个变量

     在关卡蓝图中加载上这个UI

     在Player里新建一个Blur的变量,用来说明我们当前虚化值是多少

    (Blur等于每次Blur+0.1倍的damage)

     在Ui里写入虚化值大小的逻辑

     如果一段时间没受到攻击,就把虚化值清零。

    解释一下,门默认是关的,当门开时执行的就是Blur渐渐恢复为0的逻辑,

    当我们挨打时就把门关上,如果保持3秒没挨打,就把门打开。

     新加一个border,把默认颜色改为黑,默认显示改为Hidden

     当我们血量低于0时,就显示这个黑border,表示死亡

     然后再做一个玩家的死亡动画

    在武器的结构体里,再加上一个死亡动画

    把各个武器的死亡动画写上

    然后回到UI的蓝图里,

    先判断是否有武器,如果有,执行相应的武器死亡动画。

    Do once是因为,触发的事件是event tick,死亡只有一次,如果不Do once的话Ai会一直攻击,这段逻辑会一直执行,一直重复的播放死亡动画等等。

    死亡之前把射线的碰撞体关掉,AI就无法继续攻击了。

  • 相关阅读:
    Pills
    项链
    IIS7.5 关于ASP连接ACCESS数据库超时问题
    清明
    The New Beginning
    新的开始
    Mysql中文乱码以及导出为sql语句和Excel问题解决
    Spring学习笔记01. 入门知识,IoC/DI
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PAT
    Django框架 python3.7+django2.2 报错:AttributeError: ‘str’ object has no attribute ‘decode’解决办法
  • 原文地址:https://www.cnblogs.com/reluctante1/p/12974928.html
Copyright © 2011-2022 走看看