虚幻引擎 Timeline 节点

Timeline是蓝图中处理简单“时间动画”的利器,当你需要物体平滑移动、属性渐变动画或响应时间触发事件时,它会是你最好的帮手。

我把它的核心知识整理成了一张图,可以先从整体上建立一个印象:

图片[1]-虚幻引擎 Timeline 节点-虚幻引擎

📍 启动你的第一个Timeline

1. 创建蓝图与添加Timeline节点

  • 步骤一:创建Actor蓝图。在UE5的内容浏览器中,右键点击空白处,选择 蓝图类(Blueprint Class) > Actor,并命名为 BP_TimelineDemo

  • 步骤二:添加Timeline节点。在 BP_TimelineDemo 蓝图的事件图表中,右键点击空白处,搜索并选择 Add Timeline 节点。命名后,你会发现一个黄色的小钟表图标出现在节点上方,这便是Timeline

注意:虽然你在图表中看到的是个“节点”,但Timeline在底层实际上是一个组件(Component),这也意味着你可以获得一个引用,并在运行时精确控制它

2. 配置曲线:定义动画的“灵魂”

创建好Timeline节点后,双击它进入 Timeline编辑器。在这里,我们需要为动画添加“轨道”。

  • 添加轨道:Timeline共有四种轨道,你最常用的是浮点轨道(Float Track)

    • 浮点 (Float Track):处理单个数值,如不透明度、亮度、移动距离。

    • 向量 (Vector Track):同时处理X, Y, Z三个值,用于位置、缩放、旋转RGB颜色。

    • 事件 (Event Track):在特定时间点触发执行线,可用来播放声音或生成特效。

    • 颜色 (Color Track):处理带Alpha通道的颜色,效果与向量轨道类似。

  • 添加关键帧:在编辑器的灰色区域,Shift + 鼠标左键 或 右键 即可添加关键帧

  • 编辑曲线:点击关键帧上的圆点,可以拖动它的横坐标(时间) 和纵坐标(数值)。在关键帧上右键,还可选择插值模式,比如 Auto 可以实现丝滑的缓动效果

  • 设置播放属性:下方的细节面板可设置动画总时长(Length) 和 循环(Loop) 等属性

⚙️ 理解Timeline的核心接口

回到事件图表,了解Timeline节点的各个引脚,这是连接蓝图逻辑的关键

类型 引脚名 功能描述
输入引脚 Play 正向播放,从当前位置开始(除非首次播放)。
Play from Start 总是从头开始播放,无论上次暂停在哪里。
Reverse 从当前位置反向播放(倒放)。
Reverse from End 总是从末尾开始反向播放
Stop 暂停动画,保留当前进度。
Set New Time 跳转到指定的时间点。
输出引脚 Update 在动画播放的每一帧都会触发,是驱动效果的核心。
Finished 动画正常播放完一遍后触发(Stop不会触发)。
Direction 输出当前的播放方向(向前/向后)。
[Track Name] 你创建的每个轨道,都会产生同名输出,返回当前时间点对应的数值。

💡 从零到一:三个实用案例精讲

✨ 案例一:开启自动门基础(最简单的Timeline动画)

  • 目标:当玩家走进触发盒时,一扇门会在1.5秒内平滑地向上滑动打开。

  • 准备:按照自动门教程创建一个 BP_AutomaticDoor 蓝图,内含门框、门板和触发盒

  • 步骤

    1. 添加变量:在BP_AutomaticDoor中创建bIsDoorOpen(布尔)、OpenHeight(浮点,默认200)和AnimationDuration(浮点,默认1.5)变量

    2. 构建Timeline:添加Timeline,双击打开,添加浮点轨道并重命名。设置曲线:在0秒时值为0,1.5秒时值为1。

    3. 蓝图连线:在事件图表中,连接 OnBeginOverlap -> Play -> Set bIsDoorOpen (设为True)。将Timeline的Update输出连到 SetActorLocation。通过 Lerp (Vector)节点计算新位置:A点=初始位置,B点=A点+(0, 0, OpenHeight),Alpha则接入Timeline的轨道输出。

    4. 实现关门:同样利用 OnEndOverlap 事件触发 Reverse 播放Timeline,实现门的下降

🎡 案例二:制作一个旋转漂浮平台(循环动画与Lerp)

  • 目标:让一个平台持续地上下轻微起伏,并缓慢自旋,营造魔幻氛围。

  • 步骤

    1. 创建平台蓝图:新建BP_FloatingPlatform蓝图,添加一个立方体或球体作为视觉组件

    2. 构建漂浮动画:添加Timeline,双击编辑,添加浮点轨道。设置三个关键帧模拟起伏:时间0秒/值0 -> 时间1秒/值1 -> 时间2秒/值0。在细节面板勾选“Loop”,实现无限循环

    3. 设置运动:在事件图表的BeginPlay调用Play。将Timeline的Update引脚连接 SetActorLocation。同样用Lerp (Vector)计算高度变化。

    4. 添加旋转:在事件图表中,使用Event Tick节点,执行 AddActorWorldRotation,Delta Rotation的Z轴设置为10度/秒

✨ 案例三:动态材质特效(在UI或物体上创造光晕)

  • 目标:让一盏点光源的强度或一个材质的自发光颜色在5秒内从柔和变到明亮。

  • 步骤

    1. 创建基础材质:新建一个材质,在材质图表中添加一个 Scalar Parameter (比如名为 “Brightness”)和一个 Vector Parameter,连接到自发光颜色Emissive Color

    2. 创建材质实例:右键刚才的材质,选择 创建材质实例(Create Material Instance),命名为 MI_GlowEffect,后续将在蓝图中控制其参数。

    3. 构建Timeline动画:新建Actor蓝图中添加Timeline,双击进入编辑器,添加一个浮点轨道,设置关键帧:时间0秒/值0.2(暗) -> 时间5秒/值2.0(亮)

    4. 蓝图连线:在BeginPlay触发Timeline的Play。将Timeline的Update连到 Create Dynamic Material Instance 节点创建动态材质实例。最后调用 Set Scalar Parameter Value 节点,设置参数名为”Brightness”,数值为Timeline的输出,将此动态材质应用到物体上

📌 经验与技巧

  • 播放按钮有区别Play从当前进度播放,Play from Start则总会重置并从头开始,务必根据逻辑正确选择

  • 别忘了Finished事件:动画结束后在此处执行收尾逻辑,如开门后允许玩家进入。

  • 善用Lerp节点Lerp(线性插值)是连接Timeline数值与目标属性变化的最佳桥梁

  • 记得创建动态材质实例:在蓝图里直接修改材质会改变所有使用该材质的物体。只有通过 Create Dynamic Material Instance 并应用到特定组件,才能实现单个实例的动画,而不影响其他物体。

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容