om红线sv制作入门(节拍线特效2:密集小节线)
这一章比较简单,不需要边开editor边看。
我有时候会说小节线,有时候会说节拍线,这两个是同一个东西。
大多数情况下,谱师通过写大量小间距的红线来创造密集节拍线的效果,通常间距在2ms~10ms。Singularity整个谱随处可见这样的用法。但现在osu可以读0.01x的绿线,这为我们提供了另一种思路。
在没有红线重置节拍线的情况下,默认红线meter为4/4时,每4拍为一个小节,即每4拍一条小节线。当meter为1/4时,每1拍为一个小节,每1拍就有一条小节线。要让节拍线尽可能密集,先把meter设为1/4。
我们先试着从红线下手。把红线值翻倍,这样每分钟节拍数就翻倍,每分钟出现的节拍线数量也翻倍,假如原来两条线的间隔是200ms,现在就变成了100ms。但是,与此同时,红线值翻倍也意味着下落速度翻倍了。空间距离=速度*时间,时间减半,速度翻倍,两两相抵,空间距离不变,我们不会直观地感觉到节拍线变密。但如果直接将谱子的基准bpm(osu会把最长的红线区间对应的bpm当做基准bpm)翻倍,用通配速游玩,下落速度就不会变化,节拍线空间距离就会变小。但这样要动到基准bpm,除非万不得已,否则不要用这种方式,下文也不会再考虑这种情况。可以思考一下这种方式的弊端。
那让我们全部重来,试着从绿线下手。把绿线值减半,下落速度就减半。空间距离=速度*时间。因为红线没变,所以节拍线的时间间隔不变,那么空间距离就相应地减半了。我们可以直观地感受到,节拍线变密了。代价就是下落速度变成原来的一半。但请注意前面讲过的,改变红线值不会改变节拍线的空间距离。那我们在此基础上,翻倍红线,这样下落速度红绿相抵,又正常了。如果我们不满足于此,绿线写0.01x,红线翻100倍,
这样,我们就能在不改变下落速度的条件下,写出非常密集的节拍线。当然,下落速度也是可以改变的,红线不一定要和绿线相抵。
这种方式具有传统方式不具备的优点:
1.简洁。传统方式需要写成百上千条红线,这种方式只要一条红线和一条绿线。
2.传统节拍线时间间隔必须>1ms(可以是1.01ms),而这种方式可以写出间隔小于1ms(低至0.06ms)的节拍线。举个例子,如果我想要让屏幕上密集的五十条红线瞬间消失,传统方式是不可能的,因为至少需要50*1=50ms。而用这种方式,只需要(60/1000000)*50=0.003s=3ms。与帧动画结合的时候,这种方式能发挥不可替代的作用。
但这种方式也有一定的缺陷,最明显的就是节拍线最小空间距离不够小。在允许低速下落的条件下, 传统方式能写出空间距离极小,视觉效果极密的节拍线(例:aleph0结尾面条),而这种方式无法实现(除非以后osu能读更低的绿线值,到0.001x的效果就很理想了,0.01x还有其局限性)
aleph0开头崩坏的那两坨密集小节线就是这么来的,以前最低0.1x的时候不够密,现在够密了(((((