|
Some checks are pending
CI / checks (push) Waiting to run
Жалоба: «по рампе взбираюсь, останавливаюсь — чуть-чуть назад проскальзываю; и сама скорость ниже, а в оригинале на рампе не замедляет». Спека (gamemovement.cpp, WalkMove): на земле вертикальная скорость обнуляется до и после ускорения, движение идёт строго по горизонтали, а склон догоняется StepMove и StayOnGround — там трассировка вниз (TracePlayerBBox на m_flStepSize) и перенос позиции в trace.endpos, без разрешения проникновений. У нас догон был сделан шагами по 1 юниту через move_aabb, и каждый шаг заканчивался выталкиванием по нормали склона, а нормаль смотрит вниз-вбок — тело проскальзывало вниз по рампе, а скорость в гору падала. Правка: Collision::ground_trace — чистый отсев вниз одним отрезком (кирпичи и габариты тел), return доли и нормали; stay_on_ground переносит позицию по нему и требует нормаль не круче sv_walkable_normal (0,7). Сдвиг меньше 0,5 юнита не применяется — как в движке, чтобы позиция не дрожала. Замер на gm_construct после правки (ровный пол 250): #1476 — 242,4/523,0, #1477 — 541,5/241,9, #1478 — 250,1/250,1, #1479 — 263,6/245,7, #1480 — 255,9/200,1, #1481 — 301,0/239,8, #1482 — 250,1/250,1. «Медленных» по порогу теста (75%) не осталось ни одной, застреваний при подъёме ноль. Остаток у #1480 (80%) — съезд по краю кирпича в изоляции, а не штраф за склон. В docs/PARITY.md A19 дописаны замеры; приёмкой осталось измерить сползание на остановке (пройти вперёд, отпустить ввод, замерить смещение) и держать ниже юнита. |
||
|---|---|---|
| .. | ||
| ARCHITECTURE.md | ||
| LUA.md | ||
| NETWORK.md | ||
| PARITY.md | ||
| PLAN.md | ||
| PROBLEMS.md | ||
| RECON.md | ||