本文档用于整理当前项目后续的动画 / 动效建设方案,目标不是单纯“让界面更花”,而是把动画正式纳入现有架构,成为:
当前系统已经具备:
因此动画系统最合理的做法,不是零散补丁,而是按层管理、按事件驱动、按配置扩展。
后续动画建设建议遵循以下原则:
动画优先回答这些问题:
不要把所有动画都堆在页面层的 class 切换里。
后续应按:
分层管理。
动画应该由事件或状态变化触发,而不是页面自己猜。
例如:
control_completedcontrol_skippedguidance_state_changedsession_startedsession_finishedheart_rate_zone_changedgps_lock_changed低端机和正式版都需要降级策略。
后续建议统一支持:
animationsEnabledanimationLevel = low / medium / high这一层最重要,也最贴玩法。
适合放在:
MapPresentationMapSceneWebGL renderer典型内容:
这一层用于数值和状态提示,不直接改地图对象。
适合放在:
典型内容:
这一层最适合和声音、震动一起看,属于事件消费型动画。
适合放在:
FeedbackDirectorUIEffectDirector典型内容:
目前系统已经有一些反馈类动效基础:
punchFeedbackFxClassmapPulsestageFx这条线后续最值得继续系统化。
这一层优先级最低。
典型内容:
如果要开始投入动画,我建议先做这 4 组。
这是当前项目最值得优先打磨的一组。
建议包含:
建议把目标点的几种状态做清晰区分:
每个状态至少应在:
上有明显区别。
建议补强以下体验:
这条非常适合未来玩法扩展,尤其是:
建议后续支持:
动画最好不要由页面层直接“看到状态变了就自己猜”,而应由事件或 presentation 状态明确驱动。
建议优先整理以下动画事件:
session_startedsession_finishedsession_cancelledcontrol_completed:startcontrol_completed:controlcontrol_completed:finishcontrol_skippedguidance_state_changedgps_lock_changedheart_rate_zone_changeddanger_state_changed这些事件后续可以统一映射到:
后续动画不应只写死在代码里。
建议逐步走向 profile 化。
例如:
"game": {
"feedback": {
"uiEffectsProfile": "default-race",
"mapAnimationProfile": "default-map"
}
}
建议后续统一支持:
"game": {
"animation": {
"enabled": true,
"level": "medium"
}
}
建议值:
enabledlevel = low / medium / high应继续放在地图引擎和 renderer 内处理。
不要让页面层承担:
这些都更适合:
MapPresentationMapSceneWebGL renderer适合继续放在页面层。
建议:
应继续走:
FeedbackDirectorUIEffectDirector这条线后续很适合继续统一:
不建议一口气铺太多动画。
推荐顺序:
打点成功动画体系目标点状态动画体系HUD 数字与状态过渡锁定 / 自动转图状态动画危险 / 高压反馈动画如果下一步准备开始做动画,建议第一阶段先只收下面这些:
整理一份动画事件字典:
把打点成功链系统化:
统一目标点状态动画:
补一个动画总开关:
animationsEnabledanimationLevel当前项目已经具备做动画体系的基础。
最正确的方向不是继续零散补动效,而是:
一句话总结:
后续动画建设应以“打点成功”和“目标状态”两条高频体验为起点,把动画正式纳入现有架构,而不是继续做零散样式补丁。