diff --git a/docs_dev/specs/2026-07-24-bullet-bounce-design.md b/docs_dev/specs/2026-07-24-bullet-bounce-design.md index 95c00dc..f9672fa 100644 --- a/docs_dev/specs/2026-07-24-bullet-bounce-design.md +++ b/docs_dev/specs/2026-07-24-bullet-bounce-design.md @@ -44,7 +44,16 @@ ``` ### 2.5 命中弹跳(`bullet_manager._check_collision`) -在冷数据分支内、**pierce 处理之前**插入(伤害/状态/荷载已执行): + +**(a) 命中选择跳过已访问**(`for entity_id in hits` 循环顶,距离检查之后、施伤之前):弹跳子弹停留在密集敌群时,若不跳过 `visited`,每帧命中选择可能重复命中同一敌人(bounce 恰在密集群最有价值)。故: +```gdscript + if _bullet_contexts.has(bullet_idx): + var vt = _bullet_contexts[bullet_idx].get("visited_targets", null) + if vt != null and entity_id in vt: + continue # 弹跳已命中过此敌:跳过,避免重复命中 +``` + +**(b) 弹跳重定向**:在冷数据分支内、**pierce 处理之前**插入(伤害/状态/荷载已执行): ```gdscript var bounce: int = int(cold.get("bounce_remaining", 0)) if bounce > 0: