参考项目 charged-blast-vfx 把整套效果拆成了 ChargeOrb、ChargeReadySphere、ChargeParticles、ChargeRing、ProjectileManager 五块。但用户给出的保留范围更窄:
这意味着不能直接照搬原项目的组合结构,而要重新按当前仓库的组件复用方式拆边界。
src/views/previewEntry.vue 与 src/views/templateComponet.vue该组件负责蓄力核心体,只包含:
不包含:
该组件独立承担释放时的两道扩散圆环光。为了保留原效果“随炮弹方向前进并在弹体局部坐标内回扫”的感觉,组件需要同时管理:
新增运行参数:
fireDirectionX/Y/ZfireSpeed同时保留原圆环参数,如 ringMaxRadius、ringInterval、ringLifetime 等。
该组件承担炮弹主体与尾迹,复刻原项目的:
新增运行参数:
fireDirectionX/Y/ZfireSpeed同时保留原炮弹与尾迹参数。
该组件是一个面向实际使用的组合层,内部组合:
chargedBlastRingsComponentchargedBlastProjectileComponent设计目标不是替代两个基础组件,而是提供一个“释放阶段开箱即用版本”:
chargedBlastProjectileComponent 和 chargedBlastReleaseComponent 暴露手动触发动作,方便配置面板提供“发射一次”按钮为了同时兼顾组件服务预览和后续业务接入,释放类组件采用双模式:
autoPlay = true 时,组件内部自动循环发射,方便预览autoPlay = false 时,外部通过 shotToken 或 burstToken 变化触发一次新发射蓄力组件采用:
autoAnimate = true 时内部自动循环 charge progressautoAnimate = false 时使用外部传入的 chargeProgresssrc/shader/chargeOrbGatherComponent/
base.vertglow.fragfresnel.fragnoise.fragsrc/shader/chargedBlastRingsComponent/
ring.vertring.fragsrc/shader/chargedBlastProjectileComponent/
projectile.vertprojectile.fragtrail.verttrail.frag如果只做业务驱动,组件服务预览几乎无法直观看到效果;如果只做自动循环,又会降低业务可接入性。双模式可以同时满足两边需求。
如果把圆环做成纯原地爆开,会更容易复用,但和原效果差异明显。用户要求重点复刻释放阶段,因此这里保留前进逻辑,并为其补充方向与速度参数。
用户明确要求重点保留的是“两道扩散圆环光 + 炮弹”,没有要求枪口贴片闪光,因此首版不包含 muzzle flash。
src/dcsConfig.ts 中 3 个新组件注册