spec.md 3.7 KB

新增需求

需求:提供蓄力核心组件

系统必须提供一个 chargeOrbGatherComponent,用于在 TresJS canvas 中显示蓄力阶段的核心光球与向中心汇聚粒子。

场景:默认预览模式下自动显示蓄力节奏

  • 当 用户以默认参数预览该组件
  • 则 组件必须在不依赖键盘输入的前提下自动循环显示 charge progress 带来的球体变大与粒子汇聚效果

场景:业务模式下外部驱动蓄力进度

  • 当 外部将 autoAnimate 关闭并传入 chargeProgress
  • 则 组件必须按传入的 0 到 1 进度更新球体大小、强度与粒子目标数量

需求:提供释放圆环组件

系统必须提供一个 chargedBlastRingsComponent,用于显示释放后的两道扩散圆环光,并允许其沿指定方向前进。

场景:默认预览模式下自动循环发射圆环

  • 当 用户以默认参数预览该组件
  • 则 组件必须自动循环生成一组沿发射方向前进的扩散圆环

场景:业务模式下外部触发一次释放

  • 当 外部将 autoPlay 关闭并改变 burstToken
  • 则 组件必须从当前位置生成一组新的扩散圆环,并按 fireDirectionX/Y/Z 与 fireSpeed 前进

需求:提供释放炮弹组件

系统必须提供一个 chargedBlastProjectileComponent,用于显示释放后的炮弹主体与尾迹,并允许其沿指定方向前进。

场景:默认预览模式下自动循环发射炮弹

  • 当 用户以默认参数预览该组件
  • 则 组件必须自动循环生成带尾迹的炮弹,并持续前进直到到达最大距离后重置

场景:业务模式下外部触发一次炮弹发射

  • 当 外部将 autoPlay 关闭并改变 shotToken
  • 则 组件必须生成一个新的炮弹实例,并按 fireDirectionX/Y/Z 与 fireSpeed 进行运动

场景:配置面板手动触发一次炮弹发射

  • 当 用户在组件服务的配置面板点击“发射一次”
  • 则 chargedBlastProjectileComponent 必须立即触发一次新的炮弹发射,而不依赖等待自动循环

需求:排除无关的 ready 与角色包装效果

三组件方案必须只覆盖用户指定的特效主体,不能把原项目中已排除的包装层继续迁入。

场景:接入组件服务时不包含多余效果

  • 当 用户加载这三个组件
  • 则 不应出现人物模型、人物闪烁、ready sphere、上升圆环、ready 飘散粒子、后期处理或普通射击效果

需求:提供释放组合组件

系统必须提供一个 chargedBlastReleaseComponent,将释放圆环与炮弹按参考项目的关系协同在一起,并提供更精简的统一参数集。

场景:默认预览模式下协同发射

  • 当 用户以默认参数预览该组件
  • 则 组件必须同时触发释放圆环与炮弹,使两部分看起来来自同一次释放动作

场景:外部触发一次组合释放

  • 当 外部将 autoPlay 关闭并改变 shotToken
  • 则 组件必须用同一个触发源同时驱动圆环与炮弹,而不是让两者各自独立循环

场景:配置面板手动触发一次组合释放

  • 当 用户在组件服务的配置面板点击“发射一次”
  • 则 chargedBlastReleaseComponent 必须立即触发一次新的组合释放,并保持圆环和炮弹同步

需求:通过 dcsConfig 暴露默认值和参数面板

三个组件必须通过 src/dcsConfig.ts 完成注册,并对外暴露默认值与配置面板。

场景:组件服务枚举组件时可见

  • 当 动态组件服务读取 src/dcsConfig.ts
  • 则 必须能够发现这三个新组件并读取它们的默认值和参数 schema