feat(player): crouch animations + fullscreen + skin from DB #29

Merged
min merged 1 commits from feat/crouch-animations-fullscreen-2026-06-14 into main 2026-06-14 12:40:44 +00:00

1 Commits

Author SHA1 Message Date
min
ca1ce23205 feat(player): crouch animation system + fullscreen + skin from DB
All checks were successful
CI / Lint (pull_request) Successful in 57s
CI / Build (pull_request) Successful in 1m33s
CI / Secret scan (pull_request) Successful in 44s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Этап 1 плана анимаций (ANIMATIONS_PLAN.md):

CROUCH (Ctrl):
- При зажатии Ctrl персонаж приседает, AABB → 0.45
- Скорость в crouch = 0.45×walk, crouch имеет приоритет над sprint
- Анимации: crouch_enter (one-shot) → crouch_idle / crouch_walk
- При вставании: crouch_to_stand (one-shot, если не движется)
- Y-drop для разных Mixamo-клипов (crouch_idle: -0.45, walk: -0.25)
- Anti-flicker debounce 120ms в MixamoAnimator

FULLSCREEN + СТАРТ-ЭКРАН:
- При запуске игры показывается оверлей "Нажми чтобы играть"
- Клик → requestFullscreen() → Chrome блокирует Ctrl+W/D/T/R/S и др.
- В fullscreen Esc отдаётся браузеру (выход), меню открывается на Tab
- Без fullscreen — Esc открывает меню как обычно
- BottomBar динамически показывает Esc/Tab в зависимости от режима

СКИН ЮЗЕРА:
- Приоритет: URL #skin=<id> → БД (rublox_equipped_skin) → localStorage → skin_y-bot
- В Esc-меню "Участники" Mixamo-скины грузят PNG с /character-assets/skins/

MIXAMO ANIMATOR:
- Полный класс с lazy-loading 35 состояний
- AnimationGroup loop=true через onAnimationGroupEnd safety-net
- crossFadeFrom для плавных переходов
- Жёсткий stop всех не-current групп → нет фантомных анимаций
2026-06-14 15:29:13 +03:00