补帧
30 帧的作品在 120 Hz 的屏幕上,一秒只有 30 个不同的画面。打开「动画插值」之后, 脚本还是按作品帧率跑,但画面按屏幕刷新率重画,中间那些帧把角色画在「这一帧开始的位置」 和「脚本算完的位置」之间 —— 同样的作品,看着顺很多。
这一页讲的是怎么控制它:哪些角色要补、哪一次移动不要补。
打开方式#
作品设置 → 运行 →「动画插值」。它是作品的设置,跟着作品文件走,别人打开是一样的。
打开之后,积木栏里会多出一类「插值」。关掉就收起来 —— 除非作品里已经用过这些积木, 那时候类别会留着(不然工作区里那些积木就成了认不出来的积木)。
三档#
补不补,默认是引擎自己猜的:位移超过某个距离就当成瞬移、虚像变化超过 25 就当成瞬变、 两个角度都是 90 的倍数就不转。大多数时候猜得对,猜错的时候有三档可选:
| 档 | 什么时候用 |
|---|---|
| 自动 | 默认。按上面那套猜 |
| 开 | 一直补,不再判断是不是瞬移。快速移动的子弹、镜头 |
| 关 | 永不补。血条、准星、瓦片地图这些不该有中间态的东西 |
按角色配置#
作品设置里「动画插值」那一行,开关左边有「按角色配置」。点开是一棵角色树:
- 文件夹设的档往下继承,一整个 UI 文件夹一次搞定。
- 角色默认跟着文件夹走,控件画得浅,右边写着「来自 ××」。点一下就变成它自己的档, 颜色转实;再点一下当前那一档,就交回上级。
- 多层文件夹取最近的一层:
UI//面板//按钮会先看UI//面板,没有才看UI。
角色的文件夹就是它名字里的 //,和角色栏里看到的是同一回事。配置存在角色自己身上,
所以改名不会让它丢;把角色拖进别的文件夹,如果它自己设过档就不变,没设过就跟着新文件夹走。
积木#
积木栏里分两段。
这一帧不补 —— 做一件事,并且这一次不补:
| 积木 | 做什么 |
|---|---|
瞬移到 x: () y: () |
移过去 |
瞬间面向 () 方向 |
转过去 |
瞬间将大小设为 () |
改大小 |
瞬间将 [颜色 ▾] 特效设定为 () |
改特效。菜单和原版那块一字不差,夹紧规则也一样 |
我的 [全部 ▾] 本帧不插值 |
不做动作,只把指定项对齐到当前。接在任何积木后面都行 |
前四块都可以由「原版那块积木 + 我的 [ ] 本帧不插值」拼出来,给它们单独一块是因为
这几件事太常做了。
这个角色 —— 长期的档位:
| 积木 | 做什么 |
|---|---|
将我的插值设为 [自动 ▾] |
改这个角色 / 这个克隆体的档 |
将我的插值容差设为 () |
改「多远算瞬移」的判据,单位是舞台格 |
最后是一块查询:
| 积木 | 做什么 |
|---|---|
插值开着吗? |
作品级开关开着没有 |
带「我的」的只管这个角色,不带的是作品级。 所以只有最后那块查询没有「我的」。
「瞬移到」不带「我的」是因为它和「移到 x: () y: ()」是同一类动作积木。
容差#
将我的插值容差设为 0 的意思是再大的位移也补 —— 这个数回答的是「多远算瞬移」,
设成 0 就是「没有什么算瞬移」。留空恢复成按角色尺寸自动算。
它只在「自动」这一档有意义:设成「开」本来就不判断了。
积木改的和界面配的#
积木改的只在这一次运行里有效,按绿旗会回到界面上配的那一档。界面配的是作品的初始 状态,每次运行都从同一处开始,才好排查。
细节#
- 画面比逻辑慢最多一帧。 补的是「帧初」和「已经算完的当前位置」之间,不是预测。
- 画笔不参与。 线是脚本在每一步里画的,所以边走边画时,角色看着比自己的线尾慢半拍。
- 隐藏的角色不补;显示回来的第一帧从它当前的位置开始,不会从隐藏前的位置滑过来。
- 换造型的那一帧不补方向和大小,否则会看见一个歪着的新造型突然摆正。
- 克隆体建出来时继承本体当时的档和容差,之后各改各的。
- 特效里的虚像、亮度、颜色、漩涡、鱼眼、像素化、马赛克都会补;变化太大的一律当成瞬变。 颜色按原始值补,所以 195 → 205 是平滑转过去的,而「将颜色特效设定为 0」(从 199 拨回 0) 会当成瞬变,不会倒着扫过整个色环。
- 帧率设成 0(跟着屏幕刷新)时补帧本来就没意义,引擎不会开它。
相关#
- 设置
- 设计方案:
docs/interpolation-control-design.md