Timeline时间轴

来源:互联网 发布:淘宝优惠券平台排名 编辑:程序博客网 时间:2024/06/05 19:28

介绍Timeline(时间轴)的使用方法

CSDN的博客添加图片太麻烦了,而且链接网页图片会出现错误,如果需要看详细文章,请访问我的微信公众号《猎梦虚幻研究社》

这里写图片描述
在蓝图设计图表中右键搜索Timeline或者在变量分类中创建时间轴
这里写图片描述
确定以后会在蓝图设计图表中看到新创建的时间轴
这里写图片描述
而此时展开Variables中的Components分类,也能在里面找到这个时间轴。也就是说,当你创建了一个时间轴,它实际上就成为了一个组件附加在了蓝图类里。
这里写图片描述

双击打开时间轴,可以看到时间轴编辑页面
这里写图片描述
这张图是刚创建新的时间轴,未添加任何内容的时候显示的样子。这个时候我们就可以点击上面的按钮来为时间轴增加数据,或者设置参数。为了讲解方便,我直接将官方文档上的表格截图下来,供大家参考:
这里写图片描述
由上面官网文档的截图中可以看出,时间轴可以输出四种数据,分别是Float浮点数,Vector向量,Color颜色和Event事件。

点击按钮以后就可以给时间轴添加相应的数据,如果点击多个或者多次,可以添加多个不同的输出参数。
这里写图片描述
当添加不同的输出后,Timeline就会在输出部分多出来几个新的引脚,引脚的名称可以在时间轴编辑页面点击曲线的标题进行更改,这个输出表示曲线每帧在对应时间输出的值。

介绍一下Timeline的输入输出参数:

这里写图片描述

输入部分:

Play是正向播放,当这个执行引脚被激活时,时间轴从当前停止位置开始播放(如果从来没播放过就从头开始播放,如果是中途暂停,就从暂停的地方开始播放)。

Play from Start是从头开始播放,无论当前播放到哪里,都从第一帧开始播放。

Stop是停止播放

Reverse是从当前位置开始反向往前播放,与Play正好相反。

Reverse from End是从最后一帧开始向前播放,与Play from Start相反。

Set New Time引脚如果被触发,则会使用最下方的New Time中输入的时间作为当前时间,这样可以使时间轴跳跃着播放。

New Time中输入新设置的时间,比如我需要从中间开始播放,就可以取时间轴总时长并且除以2再作为参数给New Time来实现从中间播放。

输出部分:

Update是一个每帧执行的输出引脚,当时间轴还在执行时,它就会每帧执行。

Finished则是在时间轴播放完毕后进行的最后收尾用输出,可以理解为回调函数,即时间轴执行完后的后续逻辑。

Direction是一个枚举类型(关于枚举类型可以翻看往期推送,也可以在后台回复“枚举”或“Enum”),用处是输出当前时间轴的播放方向。枚举值只有正向和反向两个可选值。

而上图中后续的输出则是添加的时间轴对应的输出,图中的New Track 0是我添加的一个Float型曲线的输出。同理,添加的其他输出也会添加在下面,并依次排列。

我就直接以官网的示例进行介绍,添加一个Float类型的曲线(点击标有f+的按钮符号),这时在坐标轴中右键添加关键帧(Add Key)。
这里写图片描述
任意添加三个关键帧,完成这个步骤之后,曲线会根据你添加的关键帧自动构成曲线,如图:
这里写图片描述
这时候如果想微调曲线,选中曲线的点(单击一个点或者框选多个点均可)
这里写图片描述
然后右键点击,会显示出曲线的变换模型(Auto,User,Break,Linear,Constant),可以手动点击,也可以用键盘的数字键快捷更改。
这里写图片描述

这里对曲线的调整和Maya中调整曲线的方式基本一致,总的来说就是调整自动平滑的曲线,或者直线连接,或者直接截断,或者左右分开调整。点击曲线上的关键帧,可以拖动左右两个小手柄来改变曲线弯曲的趋势。
这里写图片描述
在下面Tangents里面,Flatten用于将手柄重置回水平状态
这里写图片描述
Straighten同样是将手柄打直,但是这个操作是取平均值来打直
这里写图片描述

看完操作之后,来讲解一下Timeline的输出信息。

当我们添加一个Float曲线时,时间轴编辑器里面就会多出来我们添加的曲线,在曲线上添加关键帧,使曲线有一个比较明显的变化,比如我添加的这样:
这里写图片描述
这时选中各个点,在Time和Value两个框中确定数值,使关键帧在一个比较规整的位置:
这里写图片描述
这里我的三个点分别是(0,0),(1,10),(2,5),调节框在上图红色框里(红框旁边的横向和竖向按钮是让曲线适应窗口)。

这时选中前两个点后按数字键“1”来使曲线变得平滑:
这里写图片描述
这个操作等同于对关键帧右键单击后选择第一个Auto,之前已经说过。

现在要注意一点,我们的动画时间轴其实只给了2秒的关键帧,也就是说我实际上只准备播放两秒钟,但是现在默认时长是5秒,所以我需要将最大时长设置为2秒:
这里写图片描述
这时就可以关闭这个时间轴编辑页面回到EventGraph。

我现在要做的就是用上之前介绍的两个函数——PringString和SetActorLocation(如果不了解这两个函数,可以翻看往期推送或者直接在后台回复函数名printstring和setactorlocation)来观察Timeline的使用效果。

我要做的是在游戏BeginPlay的时候蓝图开始改变自身的位置,并且打印曲线的输出值到屏幕上,最后输出一个Finish Play!在屏幕上。

将这个时间轴创建在任意一个Actor蓝图类中,给蓝图一个可见的模型(比如添加StaticMeshComponent),然后将蓝图写成下图的样子:
这里写图片描述
实际运行时如下图:
这里写图片描述
先被设置到场景坐标原点,再沿着X轴方向移动150的单位距离,最后往回移动75的单位距离。

总结:

Timeline时间轴的用处就是沿着现有曲线播放,并且输出曲线上的值。时间轴可以输出小数,可以输出坐标(Vector),可以输出颜色,还可以定时输出事件(执行引脚)。时间轴在触发后可以自动播放,所以不用连接Tick。

关于时间轴,可以翻看官方文档关于时间轴的介绍。

这里写图片描述

原创粉丝点击