【UE5】【蓝图】 LevelSequence 动画播放与暂停
最近有些工作,在研究UE5 蓝图的LevelSequence,来制作一些简单动画。做个笔记,记录一下动画更换绑定actor的操作,以及动画播放后如何暂停和继续。
最近有些工作,在研究UE5 蓝图的LevelSequence,来制作一些简单动画。做个笔记,记录一下动画更换绑定actor的操作,以及动画播放后如何暂停和继续。
一. 运行时生产LevelSequence并绑定给一个新的actor
1. 创建一个LevelSequence
这里是一个简单的位置平移LevelSequence,一共就2个关键帧,动画持续90帧,也就是3秒.其中绑定的actor可以是关卡中的任意actor, 比如我这里就直接图省事,绑定了test蓝图.
2. 添加蓝图逻辑
这里是我获取了包含Test标签的一个actor, 如果直接在这里生成一个actor,或者使用一个变量传递都是可以的. 截图中的"获取序列绑定"节点,需要选中之前创建的LevelSequence,以及当时绑定的actor. 这里我把生成的播放器加入到了一个PlayerList中, 用来在后续事件中对其进行暂停和继续播放的操作.
二. 对LeveSequence Player进行暂停与继续播放
1. 暂停
暂停操作是比较简单的, 其实只有一个节点, 蓝图逻辑如下:
2. 继续播放(误)
一开始我想, 可以直接按照暂停的逻辑描写, 于是我这样写的蓝图:
但是这次发现了问题, 如果暂停操作是在播放结束之前, 那么继续播放也没有问题; 但是如果暂停操作是在播放结束后, 那么暂停后再对其播放, 会导致动画从头再度进行一次播放, 而这明显不是我们的初衷.
3. 继续播放(正确版)
因此, 我对其进行了一个检测, 如果动画的当前事件与动画结束时间相同,则不播放, 不相同时(也就是说暂停时播放并未完成) 调用播放节点. 这样下来目前来看可以正常使用了.
三. 总结
UE中实在是有很多没测试根本想不到的逻辑... 但是这次遇到的问题还算很容易解决的, 办法也很多. 比如在暂停时检测播放时间, 或者在暂停时调用"正在播放中"节点来获取播放状态, 都可以判断出有没有播放结束, 然后再删除PlayerList中的相应值即可.
更多推荐
所有评论(0)