6.1 Time 节点与时间驱动动画


6.1 Time 节点与时间驱动动画

本节摘要:Time 节点是所有动态效果的时钟,四个输出口对应四种时间形态:持续增长、正弦摆动、余弦摆动、帧间隔。本节用示波式实验看清每个输出的行为差异,给出"滚选用 Time、摆选用 Sine"的选型规则,并讲清时间缩放的常见变形手法。

一个节点四种时钟

4.3 节案例里我们已经用过 Time 节点的总秒数输出,这里把它的四个口完整过一遍。设计一个"示波实验"最直观:Time 节点四个输出分别接四个 Lerp 的 T 端,Lerp 两端接黑与白,输出接四个并排物体的 Base Color——四个物体变成四块实时示波屏,每个时钟的行为一目了然。

Time(总秒数):从进入场景开始持续增长的秒数,永不回头。它的数值会越来越大(跑一小时就是三千六百多),后面接乘法做偏移时依赖包裹模式续圈。适合:匀速滚动、持续位移、扫描循环(配合 Fraction 取小数)。

Sine Time(正弦时间):对总秒数取正弦,输出在负一到一之间平滑往复。适合:呼吸灯、宽度脉动、亮度闪烁(全息案例里的用法)。

Cosine Time(余弦时间):同样是往复摆动,只是相位差了四分之一周期——正弦从零出发向上,余弦从一出发向下。需要"从满值开始回落"的动画时用它更顺手。

Delta Time(帧间隔):上一帧到这一帧的时间差,约零点零一六(六十帧时)。在着色器里几乎不直接使用——着色器没有"上一帧的记忆",这个输出主要为兼容性保留。知道即可,别试图用它做累计。

图:Time 节点四个输出的时间形态对照

图:Time 节点四个输出的时间形态对照

时间缩放:三种常用变形

原始秒数很少直接用,常见三步变形。变形一:乘速度Time * 0.5 减速,Time * 3 加速——把速度做成属性就是 4.3 节的 Speed 滑条。变形二:取小数。Fraction 节点把任意正数变成零到一循环,Fraction(Time) 是一个每秒绕一圈的循环器,扫描线与轮播动画的地基。变形三:取整。Floor 节点把连续时间切成台阶,Floor(Time * 4) 变成每秒跳四格的整数计数——数字屏翻牌、故障艺术的帧跳变都用它。

三个变形可以叠加,例如 Fraction(Time * 0.3) 是"三秒循环一次"的零一区间——循环周期的控制就藏在乘数里,倒数关系:乘零点五即两秒一循环,乘零点二五即四秒一循环。

时间驱动的暂停与全局时间

一个容易被忽略的工程问题:Time.timeScale 改为零(游戏暂停)时,Time 节点跟着停——它读的是引擎缩放后的时间。如果你希望效果在暂停时继续动(主菜单的水面、暂停界面的背景流动),要用"未缩放时间":URP 图里没有现成节点,常规做法是脚本每帧把真实时间写进一个全局着色器属性,图里用该属性替代 Time。这个手法在第 7 章讲 Custom Function 时会给出具体实现,这里先记住分工:场景内效果跟游戏时间,界面级效果跟真实时间

用实验图记录时间行为

把 6.1 节的四个示波物体存成一张专用实验图,作为你的"时间行为参考卡"。以后任何时间相关的疑点(这个输出到底是持续还是往复),打开参考卡对一眼就有答案,比记忆可靠。参考卡可以继续扩充:加一行 Fraction 与 Floor 的输出显示(各接一个 Lerp 黑白),时间变形三件套也有了可视参照。这张卡是第 3 章手算传统在时间维度的延续——把抽象行为变成可对照的视觉基准。

问题:不同设备上动画速度会不一样吗?

理论上不会——Time 是按引擎时间累计的,与帧率无关;六十帧与三十帧的设备上,同一时刻的 Time 值相同。但有一个视觉陷阱:低帧率下动画的采样点变稀,快速滚动的贴图可能出现"跳格"感,观感上像变快了。处理办法是把高速动画的贴图换低频版本(减少每帧位移量),或接受低速设备的观感差异。记住结论:速度一致,观感随帧率有差异,成因在采样密度不在时间源。

时间叠加的组合库

三个时间变形(乘速度、取小数、取整)与两个时钟(Time、Sine Time)组合出常用的动态节奏,列一张组合速查:Time 乘速度接 Offset 是匀速滚动;Fraction 括号 Time 乘倒数是定周期循环;Sine Time 加一除二是归一化的呼吸;Floor 括号 Time 乘频率是步进跳变;Fraction 与 Floor 叠加可以做出"每秒前半段移动后半段停顿"的顿挫节奏(游戏感十足的待机动画常用)。组合库里的每一条都用第 3 章的手算法验证过一遍后,你的动态效果词汇量就翻了一倍。

时间驱动的相位对齐

多个时间驱动的效果同屏时(水面波动加岸上旗帜加扫描线),如果它们都直接用 Time,节奏会自然错开——多数情况这是好事(自然界的运动本来就不同步)。但有一类需求需要相位对齐:演出编排要求两个效果同时到达峰值。做法是把两个链共用同一个时间源(同一个 Time 节点的输出分叉),再让各自的相位偏移由属性控制——共用源保证可对齐,属性偏移保证可微调。时间信号的"分叉复用"与贴图的"多路复用"是同一个资源管理思想的两个应用。

问题:Sine Time 的周期可以改吗?

Sine Time 的固有周期是一秒一个来回,不能直接改周期——它是引擎算好的现成值。要改周期就绕开它,用原始 Time 自己乘频率再取正弦(Sine 节点),频率属性自己控制。这也是"现成输出与自建链"的通用取舍:现成输出省节点但不可调,自建链多两个节点但全参数可控。需要节奏变化的效果一律走自建链,把频率做成属性后,同一张图能表现慢速呼吸与急促脉动两种状态。

本节要点回顾

  • 四口分工明确:增长、正弦、余弦、帧间隔,前两个高频后两个低频。
  • 三步变形:乘速度、取小数、取整,叠加出任意周期与节奏。
  • 循环周期是倒数:乘零点五两秒一圈,乘零点二五四秒一圈。
  • 暂停会冻结:缩放时间随 timeScale 停,界面级动效需脚本喂真实时间。

时钟读会了,下一节正面强攻透明:Alpha 混合与 Alpha 裁剪两条路线的机制、成本与排序陷阱,一次讲透。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U