Hello 大家好,在上一篇文章里我们讲述了该如何实现 Enemy 被攻击死亡的功能,但是存在一个很明显的问题,就是 Enemy 攻击玩家的时候动画会抖动,并且移动的时候会漂移,今天咱们就来解决这俩个问题吧!

优化 Enemy 移动

Enemy 移动会漂移的问题是由于 AIMovement 函数是一个递归调用的,如果 Enemy 发现 Player 后,HunterPlayer 函数和 AIMovement 函数会叠加起来调用,这样是不合理的。

正常的解决方案就是当 Enemy 发现 Player 后,就需要结束 AIMovement 的一个递归调用,所以我用一个变量 IsActive 来判断 Enemy 是否被激活,如果 IsActive 为 true, 则 AIMovement 就不会再调用自己,蓝图优化如下:

Unreal Engine 4 RPG 系列教程(十四):Enemy 优化_递归调用

好了,这样就解决了 Enemy 移动漂移的问题。

优化 Enemy 攻击

Enemy 攻击动画造成抖动的原因是因为 播放动画蒙太奇的时候需要加一个限制,加入一个 doOnce 节点来控制一下播放蒙太奇的频率,只有一个动画蒙太奇播放完毕后才能继续播放下一遍,不然每次 Enemy 和 Player 发生碰撞 产生 Attack 事件的时候,就会反复从头播放,这样就造成了抖动,优化后的蓝图逻辑如下:

Unreal Engine 4 RPG 系列教程(十四):Enemy 优化_递归调用_02

当玩家死亡后,Enemy 就停止播放蒙太奇,于是就有了这个优化逻辑。

最后优化的效果如下:

Unreal Engine 4 RPG 系列教程(十四):Enemy 优化_Unreal Engine_03

Enemy Attack 的时候动画是不是不会抖动和漂移了。

获取工程

游戏完整工程下载地址: Unreal Engine RPG 开发系列完整工程 。

结尾

好了,优化后运行起游戏就发现合理多拉!今天你学会新知识了吗?

请你喝杯 ☕️ 点赞 + 关注哦~

  1. 阅读完记得给我点个赞哦,有👍 有动力
  2. 关注公众号--- HelloWorld杰少,第一时间推送新姿势
  3. 封面由 AI 生成