明日方舟的角色会朝着攻击目标进行旋转,并且有一个过度,在Unreal Engine(虚幻引擎)中如果直接set actor rotation的话,就缺少这个过度;

Unreal Engine 明日方舟一样的旋转 – 核心逻辑
这里使用Timeline和Lerp(Rotator)即可;
- 目标进入攻击范围后,获取目标的引用;
- 判断目标和自身的X轴关系,自身X的值大于目标则表示朝左看,否则向右看;
1、添加碰撞体和Flipbook,并将碰撞体调整为合适大小
这里我使用的是Capsule,当然可以根据实际情况选择使用Sphere或者Box;

2、给Collision添加 On Component Begin Overlap 事件并获取目标引用并提升为变量

注:这里用Do Once节点是因为我只要索敌成功,就一直跟随目标;如不增加Do Once节点,则会反复执行该操作;(测试项目可不管,了解即可)
3、编写朝向逻辑(SelectRotator)
通过比较目标location.x和自身location.x的大小来知道目标所在位置,如目标的x更大,则表明需要朝右看,反之朝左看;
故因为自身默认朝右看,所以Z为0,反之为180;

4、配置Timeline
我希望这个转身操作能在0.1秒完成,所以将TimeLine的长度设置为0.1;

- 这个TimeLine会输出一个叫“Alpha”的变量,这个变量名可以自己定义;
- 我这里设置了2个点:的Time和Value都是0,表示从0开始;第二个Time为0.1,Value为1,表示Time=0.1时,Value输出1;
5、安全获取目标引用
直接通过Get的方式可能会存在目标不存在导致的空引用报错,故用安全的办法获取,在获得玩家的有效引用时才进行操作;


5.1、安全获取引用的方法

6、最终逻辑实现

- 安全的获取BP_Player(目标)的引用;当目标有效时,再进行下一个步骤;
- 这里用Branch节点判断一下自身和目标rotator的情况是为了减少无效操作,当然就这里例子而言,可以不进行判断;
- Timeline选择Play From Start接入,是因为希望转动是从头开始播放;
- 通过Timeline输出的Alpha值,用Lerp(Rotator)来控制从A点到B点的变化是0.1秒完成,最后用Timeline的Update接入SetActorRotator来完成旋转;
7、最终效果
