## 新增功能 ### 1. Canvas 粒子捏碎特效 - 新建 crush-canvas.vue 组件(透明叠加层) - 4 种捏碎物品:鸡蛋🥚、核桃🥜、易拉罐🥫、气球🎈 - 粒子物理模拟:径向扩散 + 重力 + 空气阻力 + 生命值衰减 - 性能优化:固定 60fps 时间步长,粒子边界清理 ### 2. 随机触发逻辑 - 平均每 8-12 次随机触发捏碎特效 - 在握力环压缩峰值(scale 0.65)时触发 - 随机选择 4 种物品之一 - 资源清理:训练暂停/结束时清理所有定时器 ### 3. 卡路里统计与完成页面 - 标准 MET 公式计算卡路里(MET = 3.5,默认 60kg) - 5 种食物自动匹配(苹果、鸡蛋、巧克力、香蕉、米饭) - 完成页面显示:组数、次数、时长、卡路里、食物对比 - 样式设计:浅色清爽风格,绿色渐变卡片 ### 4. 预留接口 - useTTS.ts:预留 MiMo TTS 语音鼓励接口 ## 技术实现 - Canvas 粒子系统:20-30 个粒子,物理模拟流畅 - 类型安全:完整的 TypeScript 类型定义 - 性能优化:固定时间步长、边界清理、资源管理 - 响应式布局:适配不同屏幕尺寸 ## 相关任务 Task: .trellis/tasks/05-27-grip-ring-gamification PRD: prd.md Research: research/calorie-calculation.md Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
33 lines
881 B
TypeScript
33 lines
881 B
TypeScript
/**
|
|
* TTS 语音鼓励 Hook
|
|
* 用于在捏碎特效触发时播放语音鼓励
|
|
*
|
|
* 当前状态:预留接口,待集成 MiMo TTS
|
|
* TODO: 集成 MiMo TTS SDK
|
|
*/
|
|
|
|
export function useTTS() {
|
|
/**
|
|
* 播放语音鼓励
|
|
* 随机播放:"加油"、"太棒了"、"继续"、"很好"等
|
|
*
|
|
* 实现计划:
|
|
* 1. 引入 MiMo TTS SDK
|
|
* 2. 配置语音库(鼓励短语列表)
|
|
* 3. 随机选择短语并播放
|
|
*/
|
|
const playEncouragement = () => {
|
|
// TODO: 集成 MiMo TTS
|
|
// 示例实现:
|
|
// const phrases = ['加油', '太棒了', '继续', '很好', '坚持']
|
|
// const phrase = phrases[Math.floor(Math.random() * phrases.length)]
|
|
// mimoTTS.speak(phrase)
|
|
|
|
console.log('[TTS] 播放语音鼓励(待实现 MiMo TTS 集成)')
|
|
}
|
|
|
|
return {
|
|
playEncouragement
|
|
}
|
|
}
|