跳到主要内容

TAP 音符 - 点击音符

概述

TAP 是最基础的音符类型,玩家需要在音符到达判定线时进行点击操作。

技术规格

属性
类型值0
ZNear0
ZFar25
Java 枚举NoteType.TAP

JSON 格式

{
"noteType": 0,
"beat": 4.0,
"pos": [0, 0, 0],
"scale": [1, 1, 1],
"rotation": [0, 0, 0],
"holdGroup": -1
}

字段说明

字段类型必需说明
noteTypeint固定为 0
beatdouble音符出现的拍数位置
posdouble[3][X, Y, Z] 坐标(数组格式)
scalefloat[3][X, Y, Z] 缩放(数组格式)
rotationfloat[3][X, Y, Z] 旋转角度(数组格式)
holdGroupint固定为 -1(TAP 不参与长押组)

判定系统

判定窗口

判定类型时间窗口说明
PERFECT±110ms完美命中
FAST_GREAT110ms ~ 220ms偏快的大好
LATE_GREAT-220ms ~ -110ms偏慢的大好
MISS>220ms 或 <-220ms未命中

容差值

  • 空间容差: 0.15(TOLERATE_TAP_LOOK
  • 判定逻辑: 使用光线追踪检测玩家点击是否命中音符碰撞箱

判定逻辑

  1. 位置计算: 音符根据轨道变换计算实际世界坐标
  2. 碰撞检测: 检测玩家点击是否在音符碰撞箱内
  3. 时间判定: 根据点击时间与音符目标时间的差值确定判定结果
  4. 延迟补偿: 系统自动进行延迟补偿

碰撞箱计算

音符的碰撞箱基于以下因素计算:

  • 音符自身的缩放
  • 轨道的缩放
  • 音符的旋转角度
  • 轨道的旋转角度

最小碰撞箱尺寸为 1.0 格(半边长 0.5)

使用示例

基本 TAP 音符

{
"noteType": 0,
"beat": 4.0,
"pos": [0, 0, 0],
"scale": [1, 1, 1],
"rotation": [0, 0, 0],
"holdGroup": -1
}

多轨道 TAP 音符

{
"noteType": 0,
"beat": 8.0,
"pos": [2, 0, 0],
"scale": [1.5, 1.5, 1.5],
"rotation": [0, 0, 0],
"holdGroup": -1
}

注意事项

  1. TAP 音符不参与长押组,holdGroup 必须为 -1
  2. 音符的 beat 值应该与 BPM 事件配合使用
  3. 位置坐标相对于轨道的初始位置
  4. 旋转会影响碰撞箱大小和判定难度

相关文档