文章摘要
本文介绍了在Unreal Engine中使用PaperZD制作陷阱的核心逻辑与实现方法。重点包括如何通过重叠检测获取玩家引用、动画的分帧处理以及状态机的设计。同时,提供了如何优化陷阱持续检测玩家的解决方案,提高游戏的互动性和挑战性。
最终效果

使用资产
Obelisk Animation
主要逻辑
玩家与陷阱进行重叠,陷阱获取玩家引用,当陷阱效果动画播放到特定帧时,且未丢失玩家引用,则对玩家造成伤害;播放完毕攻击动画后继续进行重叠检测,如此循环;
- 当玩家走出碰撞体,则清空玩家引用;
- 当玩家死亡,陷阱不会对玩家作出反应;

蓝图制作
这个蓝图主要逻辑为碰撞体的overlap判定,所以蓝图逻辑也是比较简单的;
- 通过begin overlap来获取玩家的引用,并进入攻击状态(AttackWindow);
- 通过end overlap取消对玩家的引用;

动画制作

资产一共可切割14帧,我采用第一帧作为idle动画、2-14帧作为攻击动画,得到两个Flipbook文件;

状态机制作
Init时记得获取蓝图的引用并提升变量,方便后续使用;

这个状态机很简单,因为只有两个状态;通过AttackWindow这个值来进行状态切换;

动画通信
核心逻辑我都放在动画的关键帧上,这样能够更准确的控制各个状态;

- 第八帧我认为符合我对这个资产的攻击状态,这里会打一个点,对获取到的引用(有效)进行伤害传递;

- 最后一帧作为动画播放结束标记,我会在这里将攻击状态设为false;


最后调整
如果玩家一直站在陷阱里面,陷阱只会触发一次;
我希望陷阱是能一直能检测到玩家,这里我用的方法是取消陷阱的碰撞然后再开启;
- 攻击帧后将自身的碰撞设置为No Collision;

- 最后一帧重新将自身碰撞打开,完成;
