音符类型与判定
本文档详细介绍 RhythMC 中的音符类型和判定系统。
音符类型 (NoteType)
| 类型值 | 名称 | ZNear | ZFar | 说明 |
|---|---|---|---|---|
| 0 | TAP | 0 | 25 | 点击音符 |
| 1 | LOOK | 0 | 25 | 观察音符 |
| 2 | HOLD | 1 | 25 | 长押音符 |
| 3 | DODGE | -2 | 25 | 躲避音符 |
TAP - 点击音符
最基础的音符类型。玩家需要在音符到达判定线时进行点击操作。
LOOK - 观察音符
需要玩家看向指定方向的音符。除了点击外,还需要调整视角面向指定方向。
HOLD - 长押音符
需要按住一段时间的音符。特性:
- 同一轨道上
holdGroup >= 0的音符会被视为同一个长押 holdGroup相同的音符必须按顺序连续按下- 判定从第一个音符开始,到最后一个音符结束
DODGE - 躲避音符
需要玩家进行躲避操作的音符。通常与实体或投射物配合使用。
判定系统
判定窗口
| 判定 | 时间窗口 |
|---|---|
| PERFECT | ±110ms |
| GREAT | ±220ms |
| MISS | >220ms |
容差值 (Tolerate)
| 音符类型 | 容差值 |
|---|---|
| TAP / LOOK | 0.15 |
| HOLD | 0.15 |
| DODGE | 0.1 |
判定结果
| 结果 | 说明 |
|---|---|
| PERFECT | 完美命中 |
| FAST_GREAT | 偏快的大好 |
| LATE_GREAT | 偏慢的大好 |
| MISS | 未命中 |
长押组 (HoldGroup)
holdGroup 字段用于将多个 HOLD 类型(noteType=2)的音符连接为同一个长押。
-1: 该音符不参与任何长押组>= 0: 长押组ID
重要:holdGroup 仅对 HOLD 音符生效,其他类型音符的此字段会被忽略。
系统会根据 holdGroup 自动识别长押,并分配以下位置标记:
| 位置 | 说明 |
|---|---|
| START | 长押起始音符 |
| MIDDLE | 长押中间音符 |
| END | 长押结束音符 |
| SOLO | 单独的长押音符(整首歌只有这一个HOLD) |
使用示例
创建一个2拍的完整长押(从拍数4.0到6.0):
[
{
"noteType": 2,
"beat": 4.0,
"pos": [0, 0, 0],
"scale": [1, 1, 1],
"rotation": [0, 0, 0],
"holdGroup": 0
},
{
"noteType": 2,
"beat": 6.0,
"pos": [0, 0, 0],
"scale": [1, 1, 1],
"rotation": [0, 0, 0],
"holdGroup": 0
}
]
这两个 HOLD 音符在拍数 4.0 到 6.0 之间会被系统识别为同一个长押:
- 第一个音符会被标记为
START - 第二个音符会被标记为
END
注意事项
- 必须是 HOLD 类型(noteType=2)的音符才能形成长押
- 相同
holdGroup的音符必须在同一轨道上 - 音符按拍数顺序连续排列