12 KiB
窗口相关的动画
在1.0正式版更新后,窗口被单独提取成了一个独立的板块:窗口板块。为了避免剧透,这个板块默认是隐藏的,要让这个板块显示出来,我们需要在动作板块先放一个窗口动效事件,或者在编辑器设置中的显示窗口标签栏设置为总是报告,这个板块才会显示出来。
我们可以看到,窗口事件比以前多了很多。而且4个窗口都像房间板块一样每个窗口都占了一行。所有事件都只会对其所在行对应的窗口生效。接下来将会介绍这些事件的作用和使用方法。
隐藏窗口
窗口的显示和隐藏都在这个事件中,窗口默认只有窗口1是显示,其他窗口默认都是隐藏的,所以如果你需要操作其他窗口,需要把窗口显示出来再进行操作。
如果需要使用透明窗口,记得把背景颜色设置为透明(顶部的背景也要)
窗口板块中隐藏状态的窗口会显示灰色,可以通过这个判断你的窗口有没有忘记显示出来。
窗口动效
移动
移动跟移动房间事件一样,坐标填多少就移动到哪。
需要注意的是参照,影响的是窗口移动的范围,这两个选项的具体情况如下:
居中的范围是整个屏幕,如果将位置设置为(0,0),那么窗口只会露出一个角;
边缘的范围是整个屏幕减去窗口大小,如果将位置设置为(0,0),那么窗口的左下角将对齐屏幕左下角。
摇摆
使窗口按特定速度和方向来回移动。
位置: 初始位置;
增幅: 移动的幅度;
角度: 来回移动的方向,0度为向右;
频率: 每拍移动多少次;
运动缓速: 每次移动时用的缓速;
缓速类型: 偶数次移动可以设置成相同的缓速或者镜像(如从快到慢镜像后就是从慢到快)。
缠绕
像缠胶带一样将窗口绕着屏幕旋转。
位置: 初始位置;
速度: 每拍移动多少距离(一圈的百分之n);
增幅: 往另一个方向摇摆的距离(与移动方向垂直);
角度: 移动的方向,0度为向右;
频率: 摇摆的频率(每拍移动多少次)。
椭圆
将窗口绕着一点旋转。
位置: 旋转中心;
速度: 每拍转多少度(360° * n%);
使用循环: 文本
增幅: X轴和Y轴方向分别远离这个点多远;
角度: 从哪个角度开始旋转。
震动
震动窗口,跟震动摄像机一样。
位置: 初始位置;
增幅: 震动时X轴和Y轴方向最远能到哪;
频率: 每拍震动多少次;
周期: 每多少拍震动的移动会重复;
运动缓速: 每次震动时移动的缓速。
时长和缓速前面都说过了,就不再提了。
如果你想直观地看看各种移动方式的速度区别,可以看看这里。
窗口大小重置
想要让窗口大小发生变化,或调整窗口的轴点,都需要借助窗口大小重置事件。这个事件的设置项目是这样的:
大小: 窗口的目标大小,最大可以设置为200%, 200%,如果x和y同时被设置为了0,则窗口会立刻被重置为初始的大小(即100%, 100%)。
缩放模式: 窗口大小发生变化时内容的缩放模式,具体如下:
- 填充:将画面中的内容尽可能的填满窗口
- 适应:将画面中的内容尽可能放进窗口
- 无:保持窗口中原来内容的大小不变
如果你的窗口在大小发生变化前后长宽比不变,那么填充和适应在效果上没有区别。
轴点模式: 有默认和锚点边缘两种模式,选择默认即和房间移动的轴点没有区别,选择锚点边缘则表示选择一条边缘固定不动的情况下进行大小的缩放。
实际上选择锚点边缘的情况下就是由系统计算轴点的位置,因此在锚点边缘选择左或右时不要把
x设置为0%,在锚点边缘选择上或下时不要把y设置为0%,否则会出现bug,表现为对应窗口会消失且无法被任何方式移动回来,即使通过事件恢复了窗口的大小和轴点。
轴点: 设置位置和缩放的基准点,类似于精灵图和房间的轴点,此处不再赘述。
动画时长和缓速: 见过多次了,不再赘述。
如果你想直观地看看各种移动方式的速度区别,可以看看这里。
轴点的使用技巧
我们知道,在窗口大小发生变化时,调整轴点可以改变其缩放的中心。但是实际上,即使窗口不需要缩放,我们也可以通过调整轴点来改变窗口的位置,那么这种操作从效果上看和直接使用窗口移动看似没有什么区别,实际上在一些特殊的需求中,这个方法可以被很巧妙地使用。
窗口在移动时,使用的坐标是相对整个屏幕的,而由于不同设备的屏幕分辨率不同,导致有些效果如果用窗口移动来做会在不同分辨率下有不同效果,尤其是当多个窗口之间的位置有配合的时候(如两个窗口紧贴的效果)。
如在16:9的分辨率下制作的两个窗口紧挨着的效果:
在其他分辨率下,即使不改变窗口的位置,也可能会有不同的效果(如在22:9分辨率下):
如果想要做出在类似2-XN中两个窗口相撞的效果,窗口中间有距离会导致表演效果大打折扣。这时我们可能会想,能不能不以屏幕为基准定位,而是以窗口的大小为基准定位,是不是就可以做到了呢?
事实上,轴点就解决了这样的问题。
试想,如果两个窗口在同一个位置,而一个窗口的轴点在左边缘,另一个窗口在右边缘,就可以保证无论在什么样的分辨率下,这两个窗口都一定是紧挨着的。
所以当你的动画需要多个窗口之间的位置配合时,不妨试试用轴点的移动来代替直接移动窗口。
设置窗口内容
这个事件以前翻译错误,译成了设置窗口数量,害人不浅。
这个事件的设置项目是这样的:
内容模式: 可以选择一个房间或全部房间,在选择一个房间时,下面会出现房间目录选项,可以从4个房间里面选择一个,随后这个窗口中只会显示这个房间的内容。在选择全部房间时,这个窗口将会像平常一样显示全部4个房间的内容。
注意,在选择一个房间时,这个房间中的所有房间事件都不会在这个窗口中生效,包括房间移动,淡入淡出房间,房间遮罩等。
位置,缩放和角度: 类似于摄像头移动的对应参数。
在内容模式为一个房间时,等同于调用房间的摄像头,位置是对应房间区域的对应坐标(左下角是(0%, 0%),右上角是(100%, 100%));
在选择全部房间时,等同于调用顶部摄像头,而所有房间可显示的范围为(200%, 200%)大小,所以当位置设置为(100%, 100%)时,实际会在(相对于一个房间默认大小的)(200%, 200%)的位置,默认位置的房间的(100%, 100%)则在(75%, 75%)的位置。
根据这个结论,可以将4个房间分别放在显示区域的四个角上,并显示全部房间,这样就能用全部房间分别显示4个房间了
无论选择哪种内容模式,超出区域范围的内容都会被裁剪。
时长和缓速: 略
重新排列窗口
类似于房间板块的重新排列房间,可以设置窗口的上下关系。
设置主窗口
将对应的窗口设置为主窗口,对话,顶部护士灯光,状态牌等内容将在主窗口显示。
设置窗口名称
修改窗口的标题。在动作选择设置的时候,会直接设置窗口的标题;在动作选择增补的时候,会在原来标题的后面增加内容;在动作选择重置的时候,会将标题重置为Rhythm Doctor。
设置桌面颜色
修改模拟移动时桌面的颜色,如果不打开起始颜色,则表示从当前颜色渐变为结束颜色,如果打开起始颜色,效果将类似于自定义闪烁。
进阶内容(可能需要手术)
如果你不知道手术是什么,可以看看这里。
全屏窗口
因为窗口的最大大小写死了只能为200%,所以需要用到OutElastic缓速。
如果你忘了这个缓速长什么样,可以看看这里。
注意到这个缓速的一部分会超出所设置的值,所以可以先将窗口缩小到(1%,1%)大小,然后使用OutElastic缓速将窗口缩放到(200%,200%)大小,当窗口变大的过程中会有几帧是占满整个屏幕的,此时放一个大小为(200%,200%)、时长为999、缓速为Linear的窗口大小重置事件,窗口大小就会固定成全屏的了。
使用注释指令
()=>windowSize(float SizeX%, float SizeY%, float duration)可以直接将窗口缩放到200%以上,但这个方法只能控制窗口1的大小,还没有缓速。
更多窗口(暂时不确定官方会不会修这个)
在谱面中放置一个窗口相关的事件(这个例子用隐藏窗口事件),记住这个事件的小节、节拍和在第几行,然后打开这个谱面的文件(xxx.rdlevel),找到{ "bar": <小节>, "beat": <节拍>, "y": <行数减一>, "type": "HideWindow", "show": true },这一行,<>里面应该是你记住的数据,将"y": 后面的数替换成一个大于3的数,保存并返回编辑器,重新打开这个谱面,就会发现这个事件到第4行下面了,接着当正常窗口使用就行。
如果想要重新排列窗口,同上,找到"ReorderWindows", "order": [0, 1, 2, 3],在[]中加上 窗口的编号减一 的数,还有逗号。
窗口事件名称表:
| 事件 | 名称 |
|---|---|
| 窗口动效 | NewWindowDance |
| 重置窗口大小 | WindowResize |
| 设置窗口内容 | SetWindowContent |
| 重新排列窗口 | ReorderWindows |
| 隐藏窗口 | HideWindow |
| 设置主窗口 | SetMainWindow |
| 设置窗口名称 | RenameWindow |
| 设置桌面颜色 | DesktopColor |
当然,如果你不想手术,可以安装这个模组(b站有安装教程)


















