type
Post
status
Published
date
Mar 8, 2026
slug
summary
tags
开发
category
技术分享
icon
password
一、项目概述
1.1 项目背景
On the Beat:一款为ADHD 英语学习者打造的音乐游戏,将传统音乐节奏游戏与沉浸式AR体验相结合。玩家通过Rokid眼镜的手部追踪功能,在虚拟场景中与流动的歌词互动,通过准确的拍打手势击中音符,体验身临其境的音乐游戏。
作为一个学生作品,我和团队小伙伴打磨了将近两个月。我们团队都是初学者,但所幸Rokid的SDK非常强大,开发者社区的相关资料也很多,加上新时代AI的赋能,都帮助我们0基础上手。最后能收获到官方和孩子们的喜欢真的非常荣幸!!!


1.2 核心玩法
节奏判定:根据歌曲节拍,系统在特定时间点生成音符
手势识别:通过Rokid XR手部追踪,识别玩家的拍打、挥手等手势
实时反馈:立即显示判定等级(Perfect/Good/Miss)和得分
点歌体验:支持多首歌曲,可切换选择
歌词展示:歌词同步滚动,逐字变色跟随音乐进度
1.3 技术栈
引擎:Unity 2022+
AR框架:Rokid UXR SDK
核心技术:实时音频处理、手部碰撞检测、精确时间判定、动态UI渲染
二、整体架构设计
| 输入模块 | 手部识别、手势检测、碰撞触发 | `RokidHandCollisionDetector.cs` |
| 游戏逻辑 | 音符管理、输入处理、游戏状态 | `RhythmGameManager.cs` |
| 判定系统 | 时间计算、精确判定、结果评级 | `JudgmentSystem.cs` |
| 评分系统| 得分计算、数据统计、结果聚合 | `ScoreManager.cs`、`ScoreData.cs` |
|显示层 | UI渲染、歌词同步、视觉反馈 | `LyricScroller.cs`、`DJ.cs` |
三、核心难点与实现方案
难点 1:AR环境下的实时手部碰撞检测
问题背景:Rokid XR设备的手部追踪在AR空间中存在以下挑战:
- 手部追踪数据有延迟(通常10-30ms)
- 空间定位误差(±5-10cm)
- 快速运动时的轨迹丢失
- 复杂手势识别的误判
传统的碰撞盒检测在AR场景中容易误触发或完全不触发。
解决方案:采用分层碰撞检测机制,结合距离判定和时间冷却:
关键技术点:
1. 距离权重计算:不仅检测碰撞,还计算距离作为置信度
2. 排他性检测:确保只有最近的按钮被触发,避免邻近误触
3. 冷却机制:防止抖动导致的多次触发(50ms间隔)
4. 手部追踪集成:直接从Rokid XR SDK获取实时手部位置
难点 2:音频时间同步与精确节奏判定
问题背景:节奏游戏的核心在于精确度。常见问题:
- 音频播放时刻与游戏逻辑不同步
- 不同平台的音频延迟差异(5-50ms)
- 判定窗口设定不合理导致体验差
- 浮点精度问题累积误差
解决方案:实现多层时间同步机制和自适应判定窗口:
关键技术点:
1. 双精度时间戳:使用float精度足够,但要避免舍入误差
2. 范围搜索:不是逐个比对所有音符,而是在时间窗口内搜索
3. 最近音符匹配:在多个可能音符中选择时间最接近的
4. 判定容错:通过合理的窗口大小(Perfect ±300ms)平衡游戏难度
难点 3:动态歌词渲染与逐字同步高亮
问题背景:高质量的卡拉OK体验需要:
- 歌词与音乐精确同步(误差<100ms)
- 逐字变色跟随播放进度
- 支持多种语言和特殊标记(重读音、连接音等)
- 高性能UI更新(每帧可能需要更新多个文本)
- TextMesh Pro的富文本标签动态生成


解决方案:采用分层高亮系统和增量更新优化:
关键技术点:
1. 逐字时间映射:将行级时间映射到字级,支持精确同步
2. 增量更新:每帧只更新变化的部分(虽然这里简化为全文重建,实际可优化)
3. 富文本标签动态生成:使用TextMesh Pro的标签系统实现多样化效果
4. 性能缓存:缓存颜色值避免重复转换
5. 标记系统:支持多种视觉标记(重读音下划线、连接音背景等)
难点 4:多输入类型的灵活处理架构
问题背景:AR游戏需要支持多种输入:
- 手部手势(拍打、握拳等)
- 语音输入(某些歌曲行可能用语音判定)
- 控制器按键(备用输入)
- 各种输入的延迟和误判率不同
- 需要灵活切换或组合输入方式
解决方案:采用策略模式 + 工厂模式的输入系统设计:
关键设计模式:
1. 策略模式:每种输入类型都有独立的处理策略
2. 工厂模式:统一创建输入处理器,便于扩展
3. 灵活切换:运行时动态注册/注销输入处理器
4. 多输入支持:可同时启用多种输入方式
四、性能优化与最佳实践
4.1 CPU优化
- 对象池:复用歌词文本容器和UI元素,减少GC压力
- 范围查询优化:使用哈希表预处理音符,避免逐帧全表遍历
- 冷却机制:防止高频触发导致的重复计算
4.2 内存优化
- 分离数据和表现:歌词时序数据独立存储,UI组件只负责渲染
- 缓存机制:缓存颜色值、富文本标签等频繁使用的对象
4.3 网络与同步
- 考虑多人模式时,使用时间戳同步而非帧同步
- 使用差分同步减少网络带宽占用
五、总结与展望
On the Beat通过精确的时间判定、实时的手部追踪和动态的歌词渲染,为用户创造了沉浸式的音乐游戏体验。项目中的多个技术方案(分层碰撞检测、自适应时间窗口、动态字高亮等)可以作为其他AR音乐类应用的参考。
六、后续优化方向
1. AI难度调整:根据玩家表现动态调整判定窗口
2. 多人在线:实现联网对战、合作模式
3. 歌曲编辑器:让用户自定义歌曲和音符
4. 社区分享:用户可上传自己的成绩和视频
参考资源
- Rokid UXR SDK 文档
- Unity TextMesh Pro 富文本指南
- 节奏游戏设计最佳实践
- Author:zijiantianjiang
- URL:http://preview.tangly1024.com/article/31d3223f-da74-8058-a520-e2cf33d8ae2a
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts



