上次写的那个批量歌词的教程貌似很高端的样子,实际是因为少了代码基础的部分(以及ps基础),刚好微风娘娘说老的SB代码教程需要更新,所以这次就写了个简单易懂的代码教程。因为是简单易懂,所以只讲常用的部分。
主要整理自【翻译】故事版脚本指南(Storyboarding by Scripting)
一些问题
SB代码还可以简化为http://osu.ppy.sh/forum/t/97776
(不过众人纷纷表示这功能太鸡肋)
主要整理自【翻译】故事版脚本指南(Storyboarding by Scripting)
一些问题
- 代码的优势?
数据精确控制,复制方便,不容易误操作,不会出现SB没保存的情况,有一些SBE没有的功能。 - 代码的劣势?
一般情况下写代码都比较麻烦,并且具体效果不直观。代码一般需要结合SBE一起使用。 - SB代码在哪里?
答:SB代码在歌曲文件夹下的.osb文件中,或者.osu文件中的[Events]下。 - 我没做SB,为什么.osu中[Events]有这么一堆代码,这堆代码是什么意思?
答:
[Events]
//Background and Video events ———— 背景图及视频
0,0,"BG.jpg" ———— 插入背景图
Video,0,"OP.avi" ———— 插入视频,那个0是视频的offset
//Break Periods ———— break,与SB基本无关
2,13621,22531
//Storyboard Layer 0 (Background) ———— 四个层主要用到的是背景和前景层,对一般的SB元件来说,放到哪里都可以,但是前景层始终在背景层之上
//Storyboard Layer 1 (Fail)
//Storyboard Layer 2 (Pass)
//Storyboard Layer 3 (Foreground)
//Storyboard Sound Samples ———— SB音效,后文会提
//Background Colour Transformations ———— 背景颜色,与SB基本无关,大部分图都不会改这项
3,100,163,162,255
.osb文件中只有四个层以及SB音效的部分。需要注意的是,同是前景层的话osb在osu之上。
- 基本代码
- Sprite,Foreground,Centre,"SB\A.jpg",320,240 ———— 代表前景层放入了一个元件"SB\A.jpg"。这一行的下面会有很多行 空格(或下划线)+一个字母 开头的代码,表示对这个元件进行的操作。
_F,0,1003,1955,0,1
这句代码这样来看:
[空格(或下划线)+操作类型],[变化方式],[起始时间,结束时间],[起始量,结束量]
其中[变化方式],[起始时间,结束时间]是大部分代码都有的部分,变化方式为0-平均变化,1-先快后慢,2-先慢后快,时间是毫秒数,比如1:23:674=83674。
结束时间可以省略,省略的效果是只有一瞬间是生效的;
结束量也可以省略,省略的效果相当于结束量=起始量。
以操作类型分类:
F:对元件透明度操作,0为透明,1为不透明,小数为半透明。
_F,0,1003,1955,0,1
意思就是从1003到1955的时间内,元件由透明平均变化为不透明。
M:对元件位置操作。
_M,0,1003,1955,100,100,200,200
意思就是从1003到1955的时间内,元件由(100,100)移动到(200,200)。
S:对元件大小操作。
_S,0,1003,1955,1,1.5
意思就是从1003到1955的时间内,元件1倍大小变为1.5倍大小。
R:对元件旋转操作。
_R,0,1003,1955,0,0.3
意思就是从1003到1955的时间内,元件从0度顺时针旋转为0.3弧度。3.14就是转180度。
V:对元件进行矢量操作,通俗一点来说就是拉长或压扁。
_V,0,1003,1955,1,1.5,2,1
意思就是从1003到1955的时间内,元件横1倍竖1.5倍压扁成了横2倍竖1倍。
C:对元件颜色操作,颜色代码顺序为R,G,B,不懂的话请开画图的颜色板研究。。
_C,0,1003,1955,255,255,255,188,188,255
意思就是从1003到1955的时间内,元件从原色调(255,255,255)变为偏蓝色(188,188,255)。
MX MY:其实就是M的特例,只在X或Y方向上移动元件。
_MX,0,1003,1955,100,150
_MY,0,1003,1955,100,150
意思就是从1003到1955的时间内,元件横向/纵向坐标从100移到了150。
P:对元件的一些参数操作,包括 H - 水平翻转 V - 垂直翻转 A - additive-blend colour 颜色叠加取代原来的颜色覆盖。(注:效果无与伦比,亮瞎狗眼)
_P,0,1003,1955,H
意思就是从1003到1955的时间内,元件水平翻转。
- 循环
- L循环:循环重现代码效果,可调整重现次数。
例如:
_L,2000,2
__F,0,1003,1955,0,1 ———— 注意下面两行前面多一个空格(或下划线)
__M,0,1003,1955,100,100,200,200
首先在2000时刻循环触发,2000+1003=3003时刻执行一遍代码,2000+1955=3955时刻执行完毕,开始第二次循环;3955+1003=4958时刻执行第二遍代码,3955+1955=5910时刻第二遍执行完毕。
T循环:达到特定条件后触发,条件有HitSoundClap, HitSoundFinish, HitSoundWhistle, Passing, Failing。
例如:
_T,HitSoundFinish,500,3000
__F,0,0,100,1,0
__M,0,0,100,100,100
处于500-3000的时间内,所有的finish音效都会触发一个效果:在0-100时间内将元件由不透明变化为透明,元件的位置为100,100。
假设在1000的时刻有一个带finish音的note。玩家打的时候由于手抖,在1050的时候打到了这个note。这时这个效果就相当于'_F,0,1050,1150,1,0'。也就是说,玩家的打击触发了这个SB效果。
- SB音效
- 固定在某一时刻响起音效,不建议用来弥补长滑条中间需要加clap的情况,因为这个音效没有对应note,会给玩家造成不快。
Sample,41352,0,"soft-hitclap.wav",65
在00:41:352时刻,响起自定义soft音效的clap,音量为65;0代表背景层。
SB代码还可以简化为http://osu.ppy.sh/forum/t/97776
(不过众人纷纷表示这功能太鸡肋)
Scorpiour wrote:
SPOILER补充两点:修正一点:
MX/MY代码在执行的时候,另一个坐标会在原件初始化时确定。
举例:Sprite,Foreground,Centre,"item.png",320,240在这段代码里,原件的纵坐标(即Y坐标)始终会保持在240的位置上无法改变,除非改变初始化的位置,例如320,280。
_MX,0,10000,50000,0,640
_- 代码覆盖和默认代码
在去掉代码结束时间的时候,元件会默认为“从开始时间起总保持这个状态”,因此在某些时候可以简化制作难度,例如Sprite,Foreground,Centre,"circle.png",320,240这个代码可以简单的将缩放固定在0.8,而不用在去多写一次时间点,同样也不会在M动作对应的时间以外播放。这个方法更多用于对同一组原件的反复运用(比如尺寸相同的歌词),或者配合Triggle来用
_S,0,0,,0.8
_M,0,10000,50000,320,0,320,480
- Loop代码的说明有错。
_L,start time,times
__Action.....
L后面的数字是整个循环开始播放的时间,例如泡泡的这个例子_L,2000,22000开始,loop代码段开始执行
__F,0,1003,1955,0,1
__M,0,1003,1955,100,100,200,200
2000+1003= 3003,F/M开始生效
2000+1995= 3995,执行结束,计数器-1,第2个循环
3995+1003= 4998,F/M第二次生效
3995+1995= 5990,F/M第二次执行结束,计数器-1,归0,结束循环。