GPS点动画系统方案.md 3.2 KB

GPS 点动画系统方案

文档版本:v1.0 最后更新:2026-04-02 08:28:05

目标

把 GPS 点从“静态定位点”升级成状态驱动的动态标记系统

  • 停止时是一种动画
  • 移动时是一种动画
  • 高速时是一种动画
  • 高压/危险状态时还能叠加额外张力

原则:

  • 优先程序化动画,不先上重资源
  • 不破坏当前位置识别性
  • 必须兼容 standard / lite
  • 品牌 logo 只是贴片,不替代定位点本体和朝向三角

状态分层

1. 运动状态

  • idle
    • 基本静止
    • 轻呼吸
    • 不拖尾
  • moving
    • 正常行走/跑动
    • 有轻微动势和尾迹
  • fast-moving
    • 明显高速
    • 更强脉冲
    • 更长尾迹
    • 朝向更锐利

2. 危险/高压状态

  • warning
    • 由心率/张力状态触发
    • 不替代运动判断,而是在视觉上给 GPS 点额外警示感
    • 更暖的色彩张力
    • 更强的外环脉冲

第一阶段实现范围

默认动画 profile

  • dynamic-runner

后续预留:

  • minimal
  • warning-reactive

第一阶段具体表现

idle

  • 慢节奏呼吸
  • 基本无拖尾
  • 方向三角稍收敛

moving

  • 普通脉冲
  • 后侧轻尾迹
  • 方向三角略放大

fast-moving

  • 更快脉冲
  • 更长尾迹
  • 本体略放大
  • 方向三角更强

warning

  • 保留运动态基础
  • 外环增加暖色警示张力
  • 脉冲节奏更急

第一阶段配置字段

入口:

"game": {
  "presentation": {
    "gpsMarker": {}
  }
}

新增字段:

{
  "animationProfile": "dynamic-runner"
}

说明:

  • minimal
    • 更轻、更克制
    • 适合低配或保守活动风格
  • dynamic-runner
    • 默认值
    • 强调移动感
  • warning-reactive
    • 更强调高压/危险张力

运行时内部字段

这些字段不建议先暴露给活动配置,而是由运行时自动计算:

  • motionState
  • motionIntensity
  • wakeStrength
  • warningGlowStrength
  • indicatorScale
  • logoScale

这样可以保证:

  • 配置简单
  • 逻辑稳定
  • 真机调完后再决定哪些值得开放

运行时判定建议

运动状态

  • < 1.0 km/hidle
  • 1.0 ~ 6.8 km/hmoving
  • >= 6.8 km/hfast-moving

高压状态

参考现有 telemetry tone:

  • yellow
  • orange
  • red

其中:

  • orange / red 优先进入 warning
  • yellow 作为较轻的张力增强

渲染拆分

WebGL 主体

负责:

  • 本体
  • 外环
  • 脉冲
  • 尾迹
  • 朝向三角

2D 叠加层

负责:

  • logo 中心贴片

logo 不参与主几何动画,只跟随缩放强度和尺寸变化。

性能策略

standard

  • 完整脉冲
  • 完整尾迹
  • 警示外环

lite

  • 减弱尾迹
  • 降低 glow
  • 降低 warning 外环强度
  • 保留最基本的移动/静止差异

后续第二阶段

  • logo 贴片本身的轻动画
  • 事件动作
    • 打点成功跳动
    • 锁定开启反馈
    • 高压进入反馈
  • mascot/角色化 GPS 点

结论

GPS 点动画不应该做成单一固定动画,而应该做成:

状态驱动的动态标记系统

第一阶段先把:

  • idle
  • moving
  • fast-moving
  • warning

这 4 种状态的程序化动画跑通,再决定后续是否继续开放更细粒度配置。