fix(missile): 修复充能弹 (Charged Bolt #38) 随机游走路径缺陷:横向摆动过小 (仅±3px) 且纵向推进过快 #435
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
1. 缺陷概述 (Issue Summary)
当前网页端实现中,女巫 1 级闪电技能 充能弹 (Charged Bolt, Skill ID: 38 / Missile ID: 56) 的弹道运动学(Kinematics)与原版暗黑破坏神 II (v1.13c) 存在显著不符:
[-3px, 0, +3px]微小高频震颤内,并没有形成原版中如同电蛇一般在地面左右大范围大幅度蜿蜒曲折(蛇形游走)的视觉轨迹;2. Diablo II v1.13c Ground Truth 权威数据与机制分析
严格依据暗黑破坏神 II v1.13c 官方数据表(
Skills.txt,Missiles.txt)及原版弹道算法:2.1
Skills.txt(Row 38: Charged Bolt)17(服务端充能弹多路发射与随机路径驱动函数)23(客户端充能弹运动与渲染函数)chargedbolt(ID: 56)min(24, ln12)(弹丸数量:1 级 3 颗,每级 +1,上限 24 颗)2.2
Missiles.txt(Row 56: chargedbolt)12(标称速度)98(生命周期 98 帧 = 近 4 秒)10, AnimSpeed:16, NumDirections:162.3 原版 1.13c 随机游走运动学原理
srvdofunc 17/cltdofunc 23) 中:3. 当前代码根因剖析 (Root Cause Analysis)
3.1 横向位移硬编码为极窄的 ±3px 且未累积航向
在
src/game/skills.ts(第 4233–4247 行)与src/game/engine/missile-engine.ts(第 1018–1029 行)中:问题点:
GAT_CHARGED_BOLT_OFFSETS的取值为循环的[-1, 0, 1, -1, 0, 1...],乘以硬编码常数3后,单帧偏移量仅仅为-3px, 0, +3px。-3 + 0 + 3 = 0),未对航向角产生持久偏转,也未累加横向位置。3.2 纵向速度未受横向摆动分流,初始散射角过窄
在
src/scene/act-scene.ts(第 1948–1960 行 及 2175–2185 行):spreadAngle = 0.55过于集中收拢,多枚充能弹几乎挤在一小束平行直冲。4. 修复方案设计 (Proposed Architecture & Implementation Plan)
4.1 实施动态航向角偏转 / 连续平滑随机游走 (Steering Random Walk)
currentAngle,每若干帧(或基于低频噪声/平滑步进表)施加角速度扰动dAngle(例如 ±10°~±25°);4.2 扩展初始发射扇面
spreadAngle从当前过窄的0.55rad 适度调整至0.85 ~ 1.05rad(约 50° ~ 60°),使 3~24 枚充能弹在发射瞬间就呈现更加宽广的扇形覆盖面。4.3 单元测试与验收标准 (Verification Plan)
tests/skills/sor/skill-038-charged-bolt.test.ts,断言单颗充能弹在生命周期中横向最大偏离距离(Max Lateral Deviation)必须显著大于 25px(达到 30~80px 级别),不再拘泥于[-3, 0, 3]。