1.9 KiB
Два хіти за один цикл анімації атаки (2026-08-12)
Користувач: анімація "Loot" (удар битою) сама показує 2 фізичні удари
за один цикл кліпу, але код досі рахував лише 1 damage-пульс за цикл
(HIT_TIME_FRACTION=0.5, раз на attackAction.getClip().duration) — тобто
HITS_PER_STAGE=2 вимагав 2 повних циклу анімації на просування стейджа,
хоча мало вистачати одного.
Виправлення: HIT_TIME_FRACTION (одне число) замінено на
HIT_TIME_FRACTIONS = [0.25, 0.75] (масив — дві точки за цикл; підібрані
навмання як симетричний дефолт, можуть потребувати підстройки під реальний
тайминг замаху в кліпі, як і LOOK_AHEAD_DISTANCE раніше). Новий
PlayerC.hitsThisAttack (рахує ВСІ хіти за весь безперервний свінг, не
скидається щоцикл) + hitTimeFor(hitIndex) — рахує абсолютний час
(секунди від старту атаки) для N-го хіта: duration * (повних_циклів + HIT_TIME_FRACTIONS[hitIndex % 2]), тобто коректно переходить через межу
циклу без дрейфу.
Перевірено (Playwright, тимчасове логування [dbgHit] з таймстемпом,
видалене після): хіти йдуть з рівним інтервалом ~780мс (замість колишніх
~2×780=1560мс), і стейдж (prop.stageIndex) просувається після кожних 2
хітів (0,1 -> stage++), тобто рівно один цикл анімації = один
просунутий стейдж, як і треба.