文章摘要

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

最终效果

使用资产

Obelisk Animation

Obelisk Animation

主要逻辑

玩家与陷阱进行重叠,陷阱获取玩家引用,当陷阱效果动画播放到特定帧时,且未丢失玩家引用,则对玩家造成伤害;播放完毕攻击动画后继续进行重叠检测,如此循环;

  • 当玩家走出碰撞体,则清空玩家引用;
  • 当玩家死亡,陷阱不会对玩家作出反应;

蓝图制作

这个蓝图主要逻辑为碰撞体的overlap判定,所以蓝图逻辑也是比较简单的;

  • 通过begin overlap来获取玩家的引用,并进入攻击状态(AttackWindow);
  • 通过end overlap取消对玩家的引用;

动画制作

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

状态机制作

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

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

动画通信

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

  • 第八帧我认为符合我对这个资产的攻击状态,这里会打一个点,对获取到的引用(有效)进行伤害传递;
  • 最后一帧作为动画播放结束标记,我会在这里将攻击状态设为false;

最后调整

如果玩家一直站在陷阱里面,陷阱只会触发一次;

我希望陷阱是能一直能检测到玩家,这里我用的方法是取消陷阱的碰撞然后再开启;

  • 攻击帧后将自身的碰撞设置为No Collision;
  • 最后一帧重新将自身碰撞打开,完成;

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Index