wiki

故事板脚本命令

每个对象定义下面都会跟一条或多条命令。它们会告诉对象该干什么,称作事件,例如移动或改变颜色。你可以认为每条命令都会影响对象的一个(或一组)变量;一条命令完成后,在下一条命令更改前,对象会保留变量的数值。对于未经命令更改的对象,其变量会使用默认值。

对象定义下面的命令看起来像:

_(event),(easing),(starttime),(endtime),(params...)

其中:

  • _ 可以用空格替代。
  • (event) 是一个或一对字母,对应下文的命令之一。
  • (easing) 指示命令是否应该“加速”。请见缓动函数速查表。有效数值在下文列出。
  • (starttime) 与 (endtime) 对应命令的起止事件,均以毫秒 (ms) 为单位。
  • (params...) 不同 (event) 的指定数值不同。通常是变量应该带的数值。

缓动的有效数值如下:

数值 描述
0 线性:无缓动
1 缓出:变化先快后慢
2 缓入:变化先慢后快
3 二次缓入
4 二次缓出
5 二次缓入缓出
6 三次缓入
7 三次缓出
8 三次缓入缓出
9 四次缓入
10 四次缓出
11 四次缓入缓出
12 五次缓入
13 五次缓出
14 五次缓入缓出
15 正弦缓入
16 正弦缓出
17 正弦缓入缓出
18 指数缓入
19 指数缓出
20 指数缓入缓出
21 圆形缓入
22 圆形缓出
23 圆形缓入缓出
24 弹性缓入
25 弹性缓出
26 半弹性缓出
27 四分之一弹性缓出
28 弹性缓入缓出
29 回弹缓入
30 回弹缓出
31 回弹缓入缓出
32 弹跳缓入
33 弹跳缓出
34 弹跳缓入缓出

在特殊情况下,可以使用各种简写

在(时间上)最后一条命令完成前,对象会保持活动,在这之后则会消失。如果你就想让物件原地留在屏幕上、不进行任何改变,可以使用渐变 (F) 命令。

使用命令设置精灵图/对象进行(事件)。使用命令设置精灵图/对象进行(事件)。

基本命令

这些是所有对象都能用的基本命令。这些命令易于使用,只需要简单的计算。

渐变 (F) 命令

_F,(easing),(starttime),(endtime),(start_opacity),(end_opacity)

影响 数值定义 默认值
对象的透明度。 0 到 1,可使用小数。0 对应全透明,1 对应不透明。 1

其中:

  • (start_opacity) 对应 starttime 时数值
  • (end_opacity) 对应 endtime 时数值

举个例子,要在 1 秒内(从谱面开始后 1 秒起)将对象淡入为半透明,等待 2 秒,然后花 1 秒钟淡出,可以这么写:

Sprite,Pass,Centre,"Sample.png",320,240
_F,0,1000,2000,0,0.5
_F,0,4000,5000,0.5,0

如果我们就想让一个对象显示在屏幕上 2 秒钟,可以这么写:

Sprite,Pass,Centre,"Sample.png",320,240
_F,0,1000,3000,1,1

你也可以将第二行缩写成如下形式,对于这么写的原理会在简写章节阐释。

_F,0,1000,3000,1

移动 (M) 命令

M,(easing),(starttime),(endtime),(start_x),(start_y),(end_x),(end_y)

影响 数值定义 默认值
对象在游玩区域中的位置。 一个 (x,y) 位置,指定如上,可使用小数。 对象定义句中定义的位置。

其中:

  • (start_x),(start_y) 对应 starttime 时位置
  • (end_x),(end_y) 对应 endtime 时位置

举个例子,要将对象从屏幕左上角移动到右下角(假定图像宽度不足 200 像素,否则在端点处会出现弹入弹出现象)

Sprite,Pass,Centre,"Sample.png",320,240
_M,0,1500,6000,-110,-100,740,580

所以,

  • X 坐标:(320 被覆盖为)-110 -> 740
  • Y 坐标:(240 被覆盖为)-100 -> 580

移动 X (MX) 命令

与移动命令相似,但只会更改 X 坐标,Y 坐标保持不变。举个例子,要将对象从屏幕左侧移动到右侧:

Sprite,Pass,Centre,"Sample.png",320,240
_MX,0,1500,6000,-110,740

所以,

  • X 坐标:(320 被覆盖为)-110 -> 740
  • Y 坐标:240

移动 Y (MY) 命令

与移动命令相似,但只会更改 Y 坐标,X 坐标保持不变。举个例子,要将对象从屏幕底部移动到顶部:

Sprite,Pass,Centre,"Sample.png",320,240
_MY,0,1500,6000,-100,580

所以,

  • X 坐标:320
  • Y 坐标:(240 被覆盖为)-100 -> 580

高级命令

这些是供对象使用的额外命令。这些命令真的很高级,因此在使用前请询问他人,自行尝试也行。

缩放 (S) 命令

_S,<easing>,<starttime>,<endtime>,<start_scale>,<end_scale>

影响 数值定义 默认值
对象与原图(对应文件中的)相比的相对大小。例如:对原大小为 100x100 像素的文件,若缩放系数为 2,则对象大小会变为 200x200 像素。缩放过程受对象原点影响(中心、左上角等等) 对象原大小的系数,从 0 开始,可使用小数。 1

其中:

  • (start_scale) 对应 starttime 时的缩放系数
  • (end_scale) 对应 endtime 时的缩放系数

举个例子,要让对象(如背景)从无到有“放大”到原大小 5 倍:

Sprite,Pass,Centre,"Sample.png",320,240
_S,0,36500,37000,0,5

所以,

  • 假设图像大小为 100x100,则会被放大至 500x500。

矢量缩放 (V) 命令

此命令与 S 命令相同,但 X 与 Y 方向缩放是单独指定的。

_V,(easing),(starttime),(endtime),(start_scale_x),(start_scale_y),(end_scale_x),(end_scale_y)

举个例子,要将对象宽度改为原宽度两倍,高度改为一半:

Sprite,Pass,Centre,"Sample.png",320,240
_V,0,36500,37000,1,1,2,0.5

所以,

  • 假设图像大小为 100x100,则会被缩放至 200x50。

旋转 (R) 命令

_R,<easing>,<starttime>,<endtime>,<start_rotate>,<end_rotate>

影响 数值定义 默认值
对象相对于原图像顺时针旋转的弧度值。 任意实数;负值对应逆时针,正值对应顺时针。超出 2*pi 的值将会继续旋转。 0

其中:

  • (start_rotate) 对应 starttime 时的旋转度数
  • (end_rotate) 对应 endtime 时的旋转度数

举个例子,要让对象从 -45 度旋转到 +45 度(45 度 = 0.785 弧度):

Sprite,Pass,Centre,"Sample.png",320,240
_R,0,47210,47810,-0.785,0.785

或者让对象逆时针旋转 4 周(4 周 = 8*pi 弧度 = 25.133 弧度):

Sprite,Pass,Centre,"Sample.png",320,240
_R,0,47210,47810,0,-25.133

着色 (C) 命令

_C,(easing),(starttime),(endtime),(start_r),(start_g),(start_b),(end_r),(end_g),(end_b)

影响 数值定义 默认值
对象的虚拟光源颜色。对象像素的颜色以相减方式得出。 数字(字节)组成的颜色元组。三个值分别对应红色 (R)、绿色 (G) 与蓝色 (B),范围为 0 到 255。(0,0,0) 对应黑色,(255,255,255) 对应白色(原图像)。此命令不影响透明度。 (255,255,255)

其中:

  • (start_r),(start_g),(start_b) 对应 starttime 时的颜色
  • (end_r),(end_g),(end_b) 对应 endtime 时的颜色

举个例子,要让对象作为阴影(全黑)出现,然后淡入原有颜色:

Sprite,Pass,Centre,"Sample.png",320,240
_C,0,58810,59810,0,0,0,255,255,255

要让对象显示为黄色 (#cccc00):

Sprite,Pass,Centre,"Sample.png",320,240
_C,0,58810,59810,CC,CC,0

附加命令

参数 (P) 命令

参数命令与其他命令不同,其他命令可以看作沿持续跟踪的数值设置端点,而参数命令在对象活动时执行。也就是说,你不能在时间戳 1000 到 2000 间放一条命令,然后希望在时间 3000 时应用数值,即使对象的其他命令仍未完成也不行。

_P,(easing),(starttime),(endtime),(parameter)

其中 (parameter) 为如下之一:

  • "H" - 水平翻转图像(与旋转 180 度(弧度)不同)。[横向翻转]
  • "V" - 竖直翻转图像。[纵向翻转]
  • "A" - 使用相加颜色渲染方式,而不是透明渲染。

例如,要将对象沿对角线翻转两秒,然后回到正常状态:

Sprite,Pass,Centre,"Sample.png",320,240
_P,0,60000,62000,H
_P,0,60000,62000,V

复合命令

也有更复杂的命令,其本身没有实际作用。它们为其他事件的发生提供条件,并会在下列页面解释: