444 lines
20 KiB
Markdown
444 lines
20 KiB
Markdown
# 单发拍的衍生节奏型
|
||
|
||
## 单发拍进阶用法
|
||
|
||
本小节的内容可能会稍显冗长和晦涩,希望大家能保持耐心多多琢磨。
|
||
|
||
我们前面说过,护士提示的 Rea 和 Get 对应脉冲,Dy 和 Set 对应按拍,Go 代表单发拍开始,这种规则当然不仅仅适用于普通单发拍。先来看一个简单的摇摆单发拍:
|
||
|
||
```rdview 11 3
|
||
es.SayReadyGetSetGo_Get 1[];
|
||
es.SayReadyGetSetGo_Set 2.5[];
|
||
es.SayReadyGetSetGo_Go 5[];
|
||
eb.AddOneshotBeat 5 1[loop=1,tick=1.5,interval=4];
|
||
```
|
||
|
||
可以看到,虽然 Get-Set 与 Set-Go 之间的间隔不同,但依然保持了上述的对应关系。实际上,这就是`4-4`使用的单发拍。
|
||
|
||
在`2-3`中也出现了摇摆单发拍,可以试着自己理解一下这关的单发拍提示:
|
||
|
||
```rdview 10 2
|
||
eb.AddOneshotBeat 1[];
|
||
eb.AddOneshotBeat 3[];
|
||
eb.AddOneshotBeat 5[tick=0.75];
|
||
eb.AddOneshotBeat 6[tick=0.75];
|
||
eb.AddOneshotBeat 7[tick=0.75];
|
||
eb.AddOneshotBeat 8[tick=0.75];
|
||
```
|
||
|
||
如果我们在此基础上更进一步,会发生什么呢?来看看`4-4N`中出现过的这段单发拍:
|
||
|
||
```rdview 12 4
|
||
g 1 1 4 2[offset=4]{
|
||
es.SayReadyGetSetGo_Rea 0 0[];
|
||
es.SayReadyGetSetGo_Dy 0.75 1[];
|
||
es.SayReadyGetSetGo_Get 1.5 0[];
|
||
es.SayReadyGetSetGo_Set 2.25 1[];
|
||
es.SayReadyGetSetGo_Go 4 0[];
|
||
g 0 -1 0.75 3 #0f8[]{};
|
||
g 1.5 -1 0.75 3 #0f8[]{};
|
||
g 4 -1 0 3 #0f8[]{};
|
||
};
|
||
eb.AddOneshotBeat 5[tick=0.75];
|
||
eb.AddOneshotBeat 6.5[tick=0.75];
|
||
eb.AddOneshotBeat 9[tick=0.75];
|
||
eb.AddOneshotBeat 10.5[tick=0.75];
|
||
```
|
||
|
||
可以看到,图中的单发拍已不再局限于一个单发拍不断重复了,而是变成了若干个单发拍构成的单发拍组的不断重复,但前面讲过的与护士提示之间的对应关系仍保持不变。由此我们可以得到单发拍的核心规则:
|
||
|
||
单发拍本质上是对一段节奏(循环节)的不断重复,这段节奏可以由一个或多个单发拍构成。在单发拍开始之前,会使用护士提示,以 Rea、Dy、Get、Set 的形式,重复一次(或多次)这段单发拍循环节,并在最后用 Go 表示单发拍的开始。
|
||
|
||
当对一段较为复杂的单发拍进行提示的时候,由于循环节由多个单发拍组成,护士必然会提示多个脉冲和按拍的位置,这时仍然需要遵循只在最后一对脉冲和按拍处使用 Get Set,其余部分均使用 Rea Dy。
|
||
|
||
```rdview 13 4
|
||
g 1 1 4 2[offset=4]{
|
||
es.SayReadyGetSetGo_Rea 0 0[];
|
||
es.SayReadyGetSetGo_Dy 1 0[];
|
||
es.SayReadyGetSetGo_Rea 2 0[];
|
||
es.SayReadyGetSetGo_Dy 2.5 1[];
|
||
es.SayReadyGetSetGo_Get 3 0[];
|
||
es.SayReadyGetSetGo_Set 3.5 1[];
|
||
es.SayReadyGetSetGo_Go 4 0[];
|
||
g 0 -1 1 2 #0f8[]{};
|
||
g 2 -1 0.5 3 #0f8[]{};
|
||
g 3 -1 0.5 3 #0f8[]{};
|
||
g 4 -1 0 3 #0f8[]{};
|
||
};
|
||
eb.AddOneshotBeat 5[];
|
||
eb.AddOneshotBeat 7[tick=0.5];
|
||
eb.AddOneshotBeat 8[tick=0.5];
|
||
eb.AddOneshotBeat 9[];
|
||
eb.AddOneshotBeat 11[tick=0.5];
|
||
eb.AddOneshotBeat 12[tick=0.5];
|
||
```
|
||
|
||
当你不确定一段单发拍提示是否正确时,可以把这段单发拍提示向后复制几份,首尾相连,如果发现所有的 Dy 和 Set 均对齐了按拍时机,就说明单发拍提示是正确的。
|
||
|
||
## 复杂脉冲
|
||
|
||
正如`2-1`所说的那样,单发拍的脉冲位置并不重要,只要保证按拍位置不变,脉冲位置是可以任意变化的。
|
||
|
||
同时,一个单发拍也可能拥有不止一个脉冲。若要实现这种效果,只需将几个单发拍的尾端对齐,首端放在不同位置即可。
|
||
|
||
以下单发拍均是合法的:
|
||
|
||
```rdview 9 2
|
||
eb.AddOneshotBeat 1[];
|
||
eb.AddOneshotBeat 3[];
|
||
eb.AddOneshotBeat 3.5[tick=0.5];
|
||
eb.AddOneshotBeat 4.75[tick=1.25];
|
||
eb.AddOneshotBeat 5[];
|
||
eb.AddOneshotBeat 5.75[tick=0.25];
|
||
eb.AddOneshotBeat 7.5[tick=0.5];
|
||
```
|
||

|
||
|
||
但这样一来,前面所说的“Rea、Get 对应单发拍脉冲”就没有意义了吗?其实不然,Rea、Get 的作用如下:
|
||
|
||
1. 护士提示的第一个词必然是 Rea 或 Get,也就意味着这个词代表单发拍循环节的开始,与末尾的 Go 对应。
|
||
|
||
2. Rea、Get 可以辅助玩家掌握单发拍的节奏型。在实际游玩中,玩家通常是会以 Rea、Get 为基础来进行单发拍的演奏的。所以通常要使 Rea、Get 契合音乐或节拍设计,来达到方便玩家记忆或丰富游戏体验的效果。
|
||
|
||
举个例子:Rea-Dy-Get-Set-Go 与 Rea-Dy--GetSet-Go,尽管两者的按拍时机相同,但不同的 Rea、Get 位置会给人带来不同的游玩体验。
|
||
|
||
```rdview 12 6
|
||
eb.AddOneshotBeat 5[];
|
||
eb.AddOneshotBeat 7.5[tick=0.5];
|
||
eb.AddOneshotBeat 9[];
|
||
eb.AddOneshotBeat 11.5[tick=0.5];
|
||
g 1 1 4 1 [offset=4]{
|
||
es.SayReadyGetSetGo_Rea 0[];
|
||
es.SayReadyGetSetGo_Dy 1[];
|
||
es.SayReadyGetSetGo_Get 2.5[];
|
||
es.SayReadyGetSetGo_Set 3[];
|
||
es.SayReadyGetSetGo_Go 4[];
|
||
g 0 -1 1 2 #0f8[]{};
|
||
g 2.5 -1 0.5 2 #0f8[]{};
|
||
g 4 -1 0 2 #0f8[]{};
|
||
};
|
||
|
||
eb.AddOneshotBeat 5 3[];
|
||
eb.AddOneshotBeat 7 3[];
|
||
eb.AddOneshotBeat 9 3[];
|
||
eb.AddOneshotBeat 11 3[];
|
||
g 1 4 4 1 [offset=4]{
|
||
es.SayReadyGetSetGo_Rea 0[];
|
||
es.SayReadyGetSetGo_Dy 1[];
|
||
es.SayReadyGetSetGo_Get 2[];
|
||
es.SayReadyGetSetGo_Set 3[];
|
||
es.SayReadyGetSetGo_Go 4[];
|
||
g 0 -1 1 2 #0f8[]{};
|
||
g 2 -1 1 2 #0f8[]{};
|
||
g 4 -1 0 2 #0f8[]{};
|
||
};
|
||
```
|
||
|
||
## 跳过单发拍
|
||
|
||
游戏在`2-1N`中引入了一种全新的单发拍机制:跳过单发拍。这种单发拍的规则很简单:跳过单发拍之后的一次单发拍按拍会被跳过。跳过单发拍无需手动添加提示,只需在单发拍修饰符中选择跳过单发拍,相关的视效与音效提示会被自动添加到关卡中。
|
||
|
||
当然,在被跳过的单发拍的这段空白时间里,也可以放置多个单发拍脉冲,以丰富谱面的节奏设计。跳过拍的“间隔”参数会影响跳过符号的动画时长。
|
||
|
||
需要注意的是,跳过单发拍会跳过下一次**击拍**,而不是下一个循环节。
|
||
|
||
```rdview 7 4
|
||
eb.AddOneshotBeat 1[type=skipshot];
|
||
eb.AddOneshotBeat 5[];
|
||
eb.AddOneshotBeat 1 2[type=skipshot];
|
||
eb.AddOneshotBeat 3 2[tick=3];
|
||
eb.AddOneshotBeat 3.75 2[tick=2.25];
|
||
eb.AddOneshotBeat 4.5 2[tick=1.5];
|
||
eb.AddOneshotBeat 5.25 2[tick=0.75];
|
||
```
|
||
|
||
另外,在剧情关卡中,跳过拍的位置如果按下空格会计算成失误,但编辑器中默认是不会失误的。
|
||
|
||
## 方块单发拍
|
||
|
||
常规的单发拍是针对一个节奏型的不断重复,而**方块单发拍**是“一次性”的单发拍,即没有重复,只需按拍一次。
|
||
|
||
方块单发拍最早出现于`MD-1`,在第五章更新后也出现在了`5-X`用于预警细分拍的出现。
|
||
|
||
选中一个单发拍,在修饰符中选择方块符号`◇`,将细分数量设为 1 ,便创建了一个方块单发拍。方块单发拍出现时需要添加特殊音效,在方块单发拍的声音栏选择“特殊”即可自动添加提示音。
|
||
|
||

|
||
|
||
除此之外,方块单发拍也需要护士提示。这种护士提示与普通单发拍的提示类似,唯一的不同点在于最后的 Go 被替换为了 One。
|
||
|
||
```rdview 5 3
|
||
eb.AddOneshotBeat 3[];
|
||
es.SayReadyGetSetGo_Get 1 1[];
|
||
es.SayReadyGetSetGo_Set 2 1[];
|
||
es.SayReadyGetSetGo_One 3 1[];
|
||
```
|
||
|
||
如果相同拍长的方块单发拍连续出现了多次,无需为每次出现添加完整的护士提示。可以逐步减少护士提示,直到完全没有护士提示,只剩下特殊提示音。
|
||
|
||
## 细分拍
|
||
|
||
与方块单发拍的概念类似,**细分拍**也是“一次性”的单发拍,但是会产生多次等间距的心跳脉冲,按键的次数也变为多次。
|
||
|
||
细分拍最早出现于`MD-1`,当时官方谱面没有官方名称,且最多仅有两个三角拍;后来第五章更新后三角拍首次出现在`5-1`并正式更名为**细分拍**,并出现了多个细分;在关卡`5-2N`中最多涉及到了五级细分;正式版更新后,在关卡`7-X2`中甚至有了八细分。
|
||
|
||
在修饰符中选择方块后,将细分数量设为大于 1 的值或者点击细分符号`△`,即可创建细分拍。特殊音效的添加与方块单发拍类似。最多可以将细分数量设置为 10 。
|
||
|
||

|
||
|
||
```rdview 4 5
|
||
eb.AddOneshotBeat 1[type=subdivision,subdivision=2];
|
||
eb.AddOneshotBeat 1 1[type=subdivision,subdivision=3];
|
||
eb.AddOneshotBeat 1 2[type=subdivision,subdivision=4];
|
||
eb.AddOneshotBeat 1 3[type=subdivision,subdivision=5];
|
||
```
|
||
|
||
在护士提示方面,不同于方块单发拍,细分拍需要在出拍前的半拍长开始数拍提示。
|
||
|
||
```rdview 13
|
||
eb.AddOneshotBeat 1[type=subdivision,subdivision=2];
|
||
g 1 1 0.5 1 #0f0[]{};
|
||
g 1 1 1 1 #0f0[]{};
|
||
g 0.5 1 0.5 1[offset=0.5]{
|
||
es.SayReadyGetSetGo_2 0 1[];
|
||
};
|
||
eb.AddOneshotBeat 4[tick=2,type=subdivision,subdivision=2,interval=4];
|
||
g 4 1 1 1 #0f0[]{};
|
||
g 4 1 2 1 #0f0[]{};
|
||
g 3 1 1 1[offset=1]{
|
||
es.SayReadyGetSetGo_2 0 1[];
|
||
};
|
||
eb.AddOneshotBeat 9[tick=2,type=subdivision,subdivision=3,interval=4];
|
||
g 9 1 1 1 #0f0[]{};
|
||
g 9 1 2 1 #0f0[]{};
|
||
g 8 1 1 1[offset=1]{
|
||
es.SayReadyGetSetGo_3 0 1[];
|
||
};
|
||
```
|
||
|
||
如果你搞不懂数拍事件提前放置的规则,可以直接使用第五章新增的单发拍数拍功能。只需将细分偏移设置为 0.5 即可自动且正确地为方块拍和细分拍数拍。*但需要注意数拍不会影响单发拍护士提示事件,容易导致聚光灯滞留,可以在第一个数拍处放置一个音量 0% 的单发拍护士数拍事件即可。*
|
||
|
||

|
||
|
||
> 注意:非必要情况下,不要关闭方块单发拍和细分拍本身的声音。这对于仅靠听觉游玩的玩家而言是必要的。
|
||
|
||
### 单独的细分拍
|
||
|
||
跟 `MD-1` 一样,你可以通过 `Rea Dy Get Set Two~Ten` 来提示单独出现的细分 2 至细分 10 。
|
||
|
||
单独细分的提示**与正常单发拍的提示类似**,Rea Dy 或 Get Set 之间的间隔同样用于提示细分拍的拍长,且数字提示**和 Go! 提示一样不需要提前**。
|
||
|
||
```rdview 14 3
|
||
eb.AddOneshotBeat 3[type=subdivision,subdivision=2];
|
||
es.SayReadyGetSetGo_Get 1 1[];
|
||
es.SayReadyGetSetGo_Set 2 1[];
|
||
es.SayReadyGetSetGo_2 3 1[];
|
||
eb.AddOneshotBeat 9[tick=2,type=subdivision,subdivision=4,interval=4];
|
||
es.SayReadyGetSetGo_Get 5 1[];
|
||
es.SayReadyGetSetGo_Set 7 1[];
|
||
es.SayReadyGetSetGo_4 9 1[];
|
||
```
|
||
|
||
## 冻结拍🧊
|
||
|
||
**冻结拍**会将单发拍冻住,使下一拍相比正常按拍位置延后一些。
|
||
|
||
冻结拍很早就存在于编辑器中,但尚未在官方关卡出现,第五章更新后终于在`5-2`首次露面,并且有了新的特效。
|
||
|
||
在修饰符中选中冰块符号`🧊`,就创建了一个冻结拍。创建一个冻结拍后,会多出“延迟”与“间隔”选项,同时相比于更新前,冻结拍在编辑器内的样式也有所变化。
|
||
|
||

|
||
|
||
```rdview 8 2
|
||
eb.AddOneshotBeat 2[type=freezeshot,delay=0.5,interval=2];
|
||
eb.AddOneshotBeat 5[type=freezeshot,delay=0.5,interval=2,tick=2];
|
||
```
|
||
|
||
对于一个冻结拍而言,一共有五个关键的时间点:左十字,右十字,出拍点(绿线),原按拍点(蓝线),实际按拍点(黄线)。
|
||
|
||
```rdview 4 2
|
||
eb.AddOneshotBeat 2[type=freezeshot,delay=0.5,interval=2];
|
||
```
|
||
|
||
- **左十字**和**右十字**会显示两次冰冻特效并分别播放不同的冰冻音效,用于预示拍延长的时间。
|
||
- **绿线**代表单发拍会在此响一次。
|
||
- **蓝线**处会将人物冻成冰块,再显示一次冰冻特效并播放一次冰冻音效,表示拍延长的开始。
|
||
- **黄线**处拍会解冻并播放最后一次冰冻音效,也是玩家应该按拍的时机。
|
||
- **绿线**与**蓝线**之间的间隔就是`拍长`的时间。
|
||
- **左十字**与**右十字**或者**蓝线**与**黄线**之间的间隔就是`延迟`的时间。
|
||
- **左十字**与**蓝线**或者**右十字**与**黄线**之间的间隔就是`间隔`的时间。
|
||
- 以前由于冻结拍尚不完善导致**绿线**不允许夹在**两个十字**之间,现在这种操作已经允许了。
|
||
|
||
若设计冻结拍,还必须满足以下两个时间点正确:
|
||
|
||
- **蓝线**所在时间应在正常单发拍的按拍位置上;
|
||
- **左十字**必须和上一个普通单发拍的按拍位置重合。
|
||
|
||
```rdview 5 3
|
||
eb.AddOneshotBeat 1[];
|
||
eb.AddOneshotBeat 3[type=freezeshot,delay=0.5,interval=2];
|
||
eb.AddOneshotBeat 1 1[grayscale=100,offset_grayscale=80];
|
||
eb.AddOneshotBeat 3 1[grayscale=100,offset_grayscale=80];
|
||
```
|
||
|
||
如果需要在冻结拍上叠加多个拍子来凸显鼓点,可以将他们的按拍点放在同一位置。
|
||
|
||
```rdview 5 3
|
||
eb.AddOneshotBeat 2[type=freezeshot,delay=0.5,interval=2];
|
||
g 2 -1 2 2 #0000[offset=0 1]{
|
||
eb.AddOneshotBeat 0.5 1[];
|
||
g 0 -2 2 3 #0000[offset=0 1]{
|
||
eb.AddOneshotBeat -1 3[tick=2.5];
|
||
};
|
||
};
|
||
```
|
||
|
||
## 灼热拍🔥
|
||
|
||
与**冻结拍**相反,**灼热拍**会形成一股热浪,使下一拍的按拍位置提前一些。
|
||
|
||
第五章更新后,灼热拍在`5-2N`首次出现。
|
||
|
||
在修饰符中选中火焰符号`🔥`,就创建了一个灼热拍。创建一个灼热拍后,会多出“间隔”选项。
|
||
|
||

|
||
|
||
类似地,对于一个灼热拍,一共有四个关键的时间点:左十字,右十字,出拍点(绿线),按拍点。为作区分且方便表述,将会把按拍点称为红线。
|
||
|
||
```rdview 5 2
|
||
eb.AddOneshotBeat 3[tick=0.5,type=burnshot,interval=2];
|
||
```
|
||
|
||
- **左十字**和**右十字**会显示两次热浪特效并分别播放不同的灼热音效,用于预示拍实际的时间。
|
||
- **绿线**处会再显示一次热浪特效并播放一次灼热特效,同时单发拍会在此响一次。
|
||
- **红线**处拍会解除灼热状态并播放最后一次灼热音效,也是玩家应该按拍的时机。
|
||
- **左十字**与**右十字**或者**绿线**与**红线**之间的间隔就是`拍长`的时间。
|
||
- **左十字**与**绿线**或者**右十字**与**红线**之间的间隔就是`间隔`的时间。
|
||
|
||
若设计灼热拍,还必须满足以下两个时间点正确:
|
||
|
||
- **绿线**所在时间应在正常单发拍的原定出拍位置上;
|
||
- **左十字**必须和上一个普通单发拍的原定出拍位置重合。
|
||
|
||
```rdview 5 3
|
||
eb.AddOneshotBeat 1[];
|
||
eb.AddOneshotBeat 3[tick=0.5,type=burnshot,interval=2];
|
||
eb.AddOneshotBeat 1 1[grayscale=100,offset_grayscale=80];
|
||
eb.AddOneshotBeat 3 1[grayscale=100,offset_grayscale=80];
|
||
```
|
||
|
||
如果需要在灼热拍上叠加多个拍子来凸显鼓点,可以将他们的按拍点放在同一位置。
|
||
|
||
```rdview 5 3
|
||
eb.AddOneshotBeat 2[type=burnshot,delay=0.5,interval=2];
|
||
g 0 -1 3 2 #0000[offset=0 1]{
|
||
eb.AddOneshotBeat 1.5 1[tick=1.5];
|
||
g 0 -1 3 3 #0000[offset=0 1]{
|
||
eb.AddOneshotBeat 0.5 2[tick=2.5];
|
||
};
|
||
};
|
||
```
|
||
|
||
## 长按单发拍
|
||
|
||
长按单发拍第一次出现在`7-1`
|
||
|
||
当听到`咻噗`的声音时,说明下一次击拍需要长按到下一个出拍点。
|
||
|
||
在修饰符中选中进度条符号就创建了一个长按单发拍,会多出`间隔`与`长按提示选项`选项。
|
||
|
||

|
||
|
||
对于长按单发拍,一共有四个关键的时间点:十字,出拍点(绿线),按拍点(黄线),长按(紫色格子)。
|
||
```rdtkview 5 3
|
||
{ "bar": 1, "beat": 3, "y": 2, "type": "AddOneshotBeat","interval": 2, "tick": 1, "hold": true }
|
||
```
|
||
|
||
- **十字**显示长按单发拍子的提示音。
|
||
- **绿线**代表单发拍会在此响一次。
|
||
- **黄线**表示长按的起始点,也就是说玩家应当从这里开始长按。
|
||
- **紫格**就是此次长按所需的时间。
|
||
- **绿线**与**黄线**之间的间隔就是`拍长`的时间。
|
||
- **十字**与**黄线**或者**绿线**与**紫格**末端之间的间隔就是`间隔`的时间。
|
||
|
||
在`长按提示`有三个选项,分别是:自动、偏早、偏晚。
|
||
|
||
- 选择**偏早**时,`十字`的位置会在`绿线`之前。
|
||
- 选择**偏晚**时,`十字`不会显示,但提示音会与`绿线`重合。
|
||
- 选择**自动**时:
|
||
- 若**拍长**小于或等于1,则像`偏早`一样,长按单发拍子的提示音会在`绿线`之前;
|
||
- 若**拍长**大于1,则像`偏晚`一样,`十字`不会显示,但提示音会与`绿线`重合。
|
||
|
||
```rdtkview 5 5
|
||
{ "bar": 1, "beat": 3, "y": 2, "type": "AddOneshotBeat","interval": 2, "tick": 1, "hold": true },
|
||
{ "bar": 1, "beat": 3, "y": 3, "type": "AddOneshotBeat","interval": 2, "tick": 1, "hold": true },
|
||
{ "bar": 1, "beat": 3, "y": 4, "type": "AddOneshotBeat","interval": 2, "tick": 1, "hold": true }
|
||
```
|
||
|
||
若设计长按单发拍,还必须满足松手音效与提示音不可重叠
|
||
|
||
如果需要在长按单发拍上叠加多个拍子来凸显鼓点,可以将他们的按拍点放在同一位置。
|
||
|
||
```rdtkview 5 3
|
||
{ "bar": 1, "beat": 1.5, "y": 2, "tick": 2.5, "type": "AddOneshotBeat" },
|
||
{ "bar": 1, "beat": 2.5, "y": 2, "tick": 1.5, "type": "AddOneshotBeat" },
|
||
{ "bar": 1, "beat": 3, "y": 2, "type": "AddOneshotBeat","interval": 2, "tick": 1, "hold": true }
|
||
```
|
||
|
||
最后我们针对细分拍、冻结拍、灼热拍做一个技术总结:
|
||
|
||
```rdview 19 7
|
||
eb.AddOneshotBeat 1[loop=1];
|
||
eb.AddOneshotBeat 5[type=freezeshot,delay=0.5,interval=2];
|
||
eb.AddOneshotBeat 1 1[loop=1];
|
||
eb.AddOneshotBeat 5 1[];
|
||
eb.AddOneshotBeat 1 2[loop=1];
|
||
eb.AddOneshotBeat 5 2[tick=0.5,type=burnshot,interval=2];
|
||
eb.AddOneshotBeat 1 4[loop=1];
|
||
eb.AddOneshotBeat 5 4[tick=1,type=subdivision,subdivision=2,interval=2];
|
||
eb.AddOneshotBeat 7 4[tick=0.5,loop=1,interval=1];
|
||
eb.AddOneshotBeat 9 4[tick=0.5,type=subdivision,subdivision=2,interval=1];
|
||
eb.AddOneshotBeat 10 4[tick=2];
|
||
eb.AddOneshotBeat 14 4[tick=2,type=subdivision,subdivision=3,interval=4];
|
||
g 5 5 0.5 1 #0f0[]{};
|
||
g 5 5 1 1 #0f0[]{};
|
||
g 4.5 5 0.5 1[offset=0.5]{
|
||
es.SayReadyGetSetGo_2 0 1[];
|
||
};
|
||
g 9 5 0.25 1 #0f0[]{};
|
||
g 9 5 0.5 1 #0f0[]{};
|
||
g 8.75 5 0.25 1[offset=0.25]{
|
||
es.SayReadyGetSetGo_2 0 1[];
|
||
};
|
||
g 14 5 1 1 #0f0[]{};
|
||
g 14 5 2 1 #0f0[]{};
|
||
g 13 5 1 1[offset=1]{
|
||
es.SayReadyGetSetGo_2 0 1[];
|
||
};
|
||
```
|
||
|
||
## 冲击拍
|
||
|
||
**冲击拍**属于一种单发拍,但在通常情况下相比正常的单发拍而言更快,护士在喊口令的同时会伴有新的哨声提示。
|
||
|
||
第五章更新后,冲击拍在`5-X`首次出现。虽然`2-2`中最快的单发拍也相当快,但并不属于冲击拍。
|
||
|
||
冲击拍的本质是**护士提示带有哨声的单发拍**,**正拍按拍**以及**快速**是其显著特征,这两点在`5-X`中也有所体现。
|
||
|
||
冲击拍除了正常的护士提示之外,开始前后还会分别会伴随四声哨子,顺序分别为**短低短低**和**高高高高**,每声哨子之间的间隔相同,且四声哨子 - 高音效与前四下按拍重合,如下图上半部分。
|
||
|
||
同时,仅当面临如下图下半部分特定的冲击像正常单发拍转化时,最后三个冲击拍的按拍会伴随三声哨子,顺序分别为**高高低**。
|
||
|
||

|
||
|
||

|
||
*请注意,灰色的护士提示事件只是为了方便理解单发拍机制,实际只需要放置红色护士语音事件即可。*
|
||
|
||
虽然`5-X`引入了冲击拍,但有几点仍需注意:
|
||
1. **冲击拍依旧是一种单发拍**,其护士提示方式与正常拍长的单发拍基本无异,只不过在拍长较短时需要多加两个 Rea Dy 延长预先提示。
|
||
2. **冲击拍并没有正拍按拍以及高速度的强制要求**,只要是一组循环的单发拍,无论正反拍都可以加上哨声提示当作冲击拍使用,只需注意使用场景、合理性与便捷性。
|
||
3. 哨声虽然是判定冲击拍的指标,但是**这只是一种新的提示方式**,只是为了让玩家更好地应对单发拍,请勿为了创造冲击拍而随意添加哨声堆砌提示,否则会显得相当冗杂。
|
||
|
||
简言之,冲击拍并不是什么新东西,只是加了哨子提示的单发拍,仅此而已。尽管在`5-X`里其速度和正反按拍切换令人印象深刻,但只需像正常单发拍一样使用即可。
|
||
|
||
总的来说,冲击拍只是为了符合`5-X`剧情而设计的机制,其提示方式相较于正常单发拍更为复杂,如果有需要可以添加哨声提示以创造出冲击拍,但是只使用护士语音提示也是完全合理的,需根据个人需求进行选择。~~虽然我不推荐用就是了,提示整得那么麻烦还容易出错。~~
|