diff --git a/scripts/autoloads/bullet_manager.gd b/scripts/autoloads/bullet_manager.gd index d79386f..f3ff5fc 100644 --- a/scripts/autoloads/bullet_manager.gd +++ b/scripts/autoloads/bullet_manager.gd @@ -260,6 +260,8 @@ func _apply_homing(bullet_idx: int, base: int, delta: float) -> void: # 用「bullet_idx 在活跃弹数中的占比」而非 bullet_idx % HOMING_RETRY_MS:后者在 # 弹数少于窗口宽度时只铺开 _active_count 毫秒(20 颗弹 → 20ms ≈ 1.2 帧,等于没 # 打散),占比式则不论弹数多少都铺满整窗。到期时刻落在 [200, 400) ms。 + # 整数除法是有意的:抖动只需毫秒粒度的偏移,小数部分丢弃即所需语义 + @warning_ignore("integer_division") var jitter: int = (bullet_idx * HOMING_RETRY_MS) / maxi(1, _active_count) # 取模在循环内不可达(bullet_idx < _active_count ⟹ jitter ≤ 199),仅作索引越界兜底 cold["homing_retry_at"] = now + HOMING_RETRY_MS + jitter % HOMING_RETRY_MS