路口电动车检查
依据用户提供的路口交警照片,在新港中路与赤岗路、江海大道两个路口布置游戏检查点:站立交警、荧光反光背心、示意手势、路锥、检查标牌和蓝色停车位。点位为场景布置,不能用于查询现实交警部署。
玩家流程
- 地面电动车接近检查位 28 米内,且与检查位之间没有建筑或街道设施遮挡时,HUD 提示靠边停车。
- 在停车位 4 米内、速度不超过 0.35 米/秒,连续停稳 0.75 秒,开始检查。初次检查持续 3 秒。
- 分别检查头盔佩戴和号牌清晰状态。合规时放行;有问题时列出「未佩戴头盔」「号牌被遮挡」,显示对应整改按钮。
- 两项都修复后复查 1.5 秒再放行。同一检查点 90 秒内不重复检查。
- 有装备问题的骑手收到示意后仍驶离,或 8 秒内未在检查位停稳,会衔接现有路网追逐。被拦下后在实际停车位置检查,有问题时仍须整改后放行;合规骑手继续通过不会因此被追逐。
- 检查和整改期间阻止加速、倒车、踢击、极速电池、换车、快速移动和配送交接。暂停、地图和声音设置仍可使用,打开地图不会推进检查计时。
- 上层高架、步行、坦克、水域和城市游览不触发电动车检查。既有超速追逐保留。
这些距离、时间和检查流程是游戏规则。
装备与存档
地图中增加「电动车安全装备」面板,停车时可调整头盔和号牌状态。默认车辆佩戴头盔、号牌清晰;选择鬼火套装时使用其原有未佩戴头盔外观,可在该面板重新戴好。换装时头盔状态跟随套装默认值,号牌状态保留。
头盔及其套装装饰随装备状态一起显隐。号牌遮挡物在真实号牌表面前方绘制,停放车辆使用同一状态。装备随街区自动及手动存档保存;旧存档缺少装备字段时按套装默认值恢复。检查未完成的标记也会保存,读档后在停车位置重新检查,装备问题仍保留。
实现与验证
src/district/checkpoint.ts:独立于 Three/Vue 的状态机、检查条件和点位;时间和距离统一在config/district/patrol.ts调整,scooterEquipmentVisual.ts仅把装备映射到模型。CheckpointNotice.vue接收检查和装备状态,向上发送整改事件;ScooterEquipmentPanel.vue接收装备和禁用状态,向上发送变更事件。DistrictApp.vue负责组合这两个按需组件,游戏循环处理业务状态。- 执勤人物、路锥和停车位复用现有实例批次;标牌共享一份纹理与材质,按距离显示。不增加逐帧地图请求或在线地图依赖。
- 单元测试覆盖合规通过、单项/双项问题、连续停稳、复查、冷却、墙体遮挡、高差、拒不配合的追逐衔接、装备默认值、模型显隐和存档兼容。浏览器测试覆盖桌面/手机整改操作、横屏遮挡、实际车辆锁定、桥下/桥上分层、步行排除及整改中存读档,并保存截图与帧成本记录。
帧成本检查保留 300 次绘制调用的上限,新增检查人物、路锥、标牌、停车位和接触阴影单次提交少于 1,000 个三角形。赤岗路口骑行视角的全帧几何量仍较高:首轮测量桌面为 148,338、手机为 130,286 个三角形,高于滨江视角使用的 90,000 参考阈值;这项全帧检查未通过。没有提高既有预算,新机制的回归分别记录设施成本与全帧成本,密集街区骑行视角的整体几何优化仍待处理。