先选择一个怪物攻击的动画序列,转换为蒙太奇
打开怪物总类,添加自定义事件,把网格体拖下来
然后打开AI行为树
加一个selector,意思是先走左边的,走不到再走右边的
然后新建一个怪物黑板
打开黑板,新建一个目标玩家
添加一个序列,然后把装饰器选成黑板,再把目标改成 我们自己设定的 目标玩家
改好后,就是这样
打开AI行为树文件夹,把随机移动任务复制一下,重命名一下
然后新建一个变量
再把 眼睛点开
回到行为树主页,把这个任务的目标改成 目标玩家
然后打开 移动到玩家面前
现在已写的逻辑是,谁攻击了怪物,谁就是目标玩家这个变量,ACTOR,那么要设置伤害源,这个攻击源就是ACTOR
现在要把以前每次攻击的,加上伤害源,比如火球普通攻击,也只是发射物碰撞到了怪物,但是伤害源是谁并没有设置
打开01角色蓝图
还有
2个发射物,火球和火雨里也要溯源
然后切换到怪物总类
加到后面,被攻击了,就有赋值了,
这里先在,发射流星火球的动作的instigator是self,也就是01玩家,
然后,发射物设置的damage causer的对象是instigator,也就是01玩家,
然后怪物总类里,受到伤害的damage causer就知道了是01玩家
然后把01玩家命名 KEY NAME,写到黑板里的,目标玩家
相当于给KEY 赋值
然后给被打的怪物设置加速度为600,直接把左上角的移动速度组件拖下来
把主角弹簧臂那里的这个关掉,可以取消一些被遮挡的 无意义拉近镜头
回到AI行为树文件夹,把移动到玩家复制
打开怪物攻击,修改下复制的内容
AI行为树上加上怪物攻击和等待
接下来判断伤害触发,是否攻击到
打开攻击动画的蒙太奇,在攻击的动画出手的位置加关键帧发通知
然后如果攻击动作的动画时间太长,而蒙太奇的播放优先级大于动画序列
怪物会强制播放完,才会执行移动的动画序列,在玩家被攻击后如果玩家快速移动远离怪物,
会导致怪物进行没有移动的动画而追击主角
所以我们要么提前终止播放动画,要么让播放攻击的时候怪物不能动
让动作更丝滑
添加完怪物攻击通知后
添加一个怪物攻击伤害的自定义事件,触发了这个事件,代表触发了攻击,然后用来判断这次攻击是否打到了玩家
怪物攻击伤害的事件后面再写
从怪物位置,往前75个像素点,半径75,用make生成个数组,数组里都是碰撞了的
从导出的数组里,筛选actor为01主角,然后应用伤害,把damage设置为变量,后面直接填写就可以
然后在01主角这里做一个伤害事件
通过测试发现,在碰撞的时候,怪物在执行这次动作有很多帧都与01主角发生了碰撞,
只需要把多球体追踪改成胶囊体追踪就好了,被攻击到就只会被扣血一次
标签:动画,01,攻击,玩家,2024,拉怪,怪物,UE5,伤害 From: https://www.cnblogs.com/loseheart/p/18117491