client: колесо прокручивает коллекцию на одну полосу карт
CI / test (push) Successful in 2m15s Details

- Исправлено направление и границы SmoothScrollRect: целевая позиция
  считается в [0, max] и уменьшается на scrollDelta, а не уходила в
  отрицательные значения (из-за этого колесо не двигало список).
- Для сетки коллекции шаг колеса = 448 px (ячейка 434 + отступ 14),
  то есть один тик — одна полоса карт.
- Проверки: EditMode 69/69, standalone собран.
This commit is contained in:
MpakobecEx 2026-11-01 20:58:27 +05:00
parent ce687b60da
commit 40759d2494
2 changed files with 6 additions and 2 deletions

View File

@ -213,6 +213,10 @@ namespace Vanguard.UI
scrollElement.flexibleHeight = 1f; scrollElement.flexibleHeight = 1f;
scrollElement.minHeight = 220f; scrollElement.minHeight = 220f;
var smooth = scroll.GetComponent<SmoothScrollRect>();
if (smooth != null)
smooth.WheelStep = 448f;
var grid = _collectionContent.GetComponent<GridLayoutGroup>(); var grid = _collectionContent.GetComponent<GridLayoutGroup>();
if (grid != null) if (grid != null)
grid.childAlignment = TextAnchor.UpperLeft; grid.childAlignment = TextAnchor.UpperLeft;

View File

@ -28,7 +28,7 @@ namespace Vanguard.UI
_target = content.anchoredPosition.y; _target = content.anchoredPosition.y;
var max = Mathf.Max(0f, content.rect.height - viewport.rect.height); var max = Mathf.Max(0f, content.rect.height - viewport.rect.height);
_target = Mathf.Clamp(_target + eventData.scrollDelta.y * WheelStep, -max, 0f); _target = Mathf.Clamp(_target - eventData.scrollDelta.y * WheelStep, 0f, max);
velocity = Vector2.zero; velocity = Vector2.zero;
_smooth = true; _smooth = true;
} }
@ -49,7 +49,7 @@ namespace Vanguard.UI
var position = content.anchoredPosition; var position = content.anchoredPosition;
var max = Mathf.Max(0f, content.rect.height - viewport.rect.height); var max = Mathf.Max(0f, content.rect.height - viewport.rect.height);
_target = Mathf.Clamp(_target, -max, 0f); _target = Mathf.Clamp(_target, 0f, max);
var t = 1f - Mathf.Exp(-Time.unscaledDeltaTime / Mathf.Max(0.01f, Smoothing)); var t = 1f - Mathf.Exp(-Time.unscaledDeltaTime / Mathf.Max(0.01f, Smoothing));
var next = Mathf.Lerp(position.y, _target, t); var next = Mathf.Lerp(position.y, _target, t);