DODGE 音符 - 躲避音符
概述
DODGE 音符需要玩家进行躲避操作的音符。通常与实体或投射物配合使用,玩家需要避免与音符碰撞。
技术规格
| 属性 | 值 |
|---|---|
| 类型值 | 3 |
| ZNear | -2 |
| ZFar | 25 |
| Java 枚举 | NoteType.DODGE |
JSON 格式
{
"noteType": 3,
"beat": 4.0,
"pos": [0, 0, 0],
"scale": [1, 1, 1],
"rotation": [0, 0, 0],
"holdGroup": -1
}
字段说明
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
| noteType | int | 是 | 固定为 3 |
| beat | double | 是 | 音符出现的拍数位置 |
| pos | double[3] | 是 | [X, Y, Z] 坐标(数组格式) |
| scale | float[3] | 是 | [X, Y, Z] 缩放(数组格式) |
| rotation | float[3] | 是 | [X, Y, Z] 旋转角度(数组格式) |
| holdGroup | int | 是 | 固定为 -1(DODGE 不参与长押组) |
判定系统
判定窗口
| 判定类型 | 时间窗口 | 说明 |
|---|---|---|
| PERFECT | ±110ms | 成功躲避 |
| MISS | 碰撞发生 | 躲避失败 |
容差值
- 空间容差: 0.1(
TOLERATE_DODGE) - 判定逻辑: 检测玩家是否与音符碰撞箱发生碰撞
判定逻辑
DODGE 音符的判定逻辑与 TAP/LOOK 完全相反:
- 碰撞检测: 检测玩家身体(头部或脚部)是否与音符碰撞箱相交
- 时间判定: 如果在判定窗口内没有碰撞,则判定为 PERFECT
- 失败条件: 如果发生碰撞,则等待音符过期后判定为 MISS
身体碰撞检测
检测逻辑:
- 将玩家位置转换到音符的局部空间
- 检查投影点是否在 2D 碰撞箱内(忽略 Z 轴深度)
- 使用音符的缩放和轨道的缩放计算碰撞箱大小
使用示例
基本 DODGE 音符
{
"noteType": 3,
"beat": 4.0,
"pos": [0, 2, 0],
"scale": [1, 1, 1],
"rotation": [0, 0, 0],
"holdGroup": -1
}
配合实体使用的 DODGE
{
"noteType": 3,
"beat": 8.0,
"pos": [0, 1, 5],
"scale": [2, 2, 2],
"rotation": [0, 0, 0],
"holdGroup": -1
}
这个音符表示玩家需要躲避一个从远处飞来的实体。
连续 DODGE 音符
[
{
"noteType": 3,
"beat": 4.0,
"pos": [0, 2, 0],
"scale": [1, 1, 1],
"rotation": [0, 0, 0],
"holdGroup": -1
},
{
"noteType": 3,
"beat": 4.5,
"pos": [1, 2, 0],
"scale": [1, 1, 1],
"rotation": [0, 0, 0],
"holdGroup": -1
}
]
与 TAP/LOOK 的区别
| 特性 | TAP/LOOK | DODGE |
|---|---|---|
| 操作类型 | 主动点击/观看 | 被动躲避 |
| 判定条件 | 命中音符 | 避免碰撞 |
| 容差值 | 0.15 | 0.1 |
| ZNear | 0 | -2 |
| 成功条件 | 时间窗口内点击 | 时间窗口内无碰撞 |
ZNear 和 ZFar 的含义
- ZNear = -2: 音符在玩家身后 2 格开始可见(允许玩家看到后方的躲避音符)
- ZFar = 25: 音符在玩家前方 25 格消失
注意事项
- DODGE 音符的成功条件是"不碰撞",而不是"点击"
- 检测的是玩家身体(头部和脚部)的碰撞,不仅仅是视线
- 如果发生碰撞,音符会在过期后自动判定为 MISS
- DODGE 音符通常需要配合视觉效果(如投射物动画)使用
- 容差值比 TAP/LOOK 更小(0.1 vs 0.15),判定更严格