Решили: боевые точки скелетного вида (Hit / Head / Feet / Shot Point) возвращены к значениям
БАЗОВОГО UnitView.prefab, а UnitView теперь громко ругается, если у вида не разведена хоть одна из
четырёх. Конвенция подтверждена Максом: Hit Point стоит в нуле, всё остальное центрируется вокруг неё.
Почему: вариант UnitView_BoneStandart переопределял все четыре точки, подняв их примерно на 0.8 —
на полроста. Точка удара оказывалась ВЫШЕ макушки рига, и по ней считались боевые цифры, искры, бары и
перекрытие щитом. Замер: точки стояли Hit (0.05, 0.85), Head (0, 1.55), Feet (0, 0), а силуэт рига
занимает y [−0.818 .. 0.736].
Базовые значения при этом ложатся на скелет почти идеально: Feet −0.798 против стоп рига −0.818,
Head +0.803 против макушки 0.736. То есть двигать не нужно было ни риг, ни точки — достаточно снять
переопределения. Похоже, их когда-то подогнали под покадрового двойника Visual Sprites/Body, у
которого ноги в нуле, — он в этом виде лежит ВЫКЛЮЧЕННЫМ.
Проверка на живой метрике: перекрытие точки удара щитом было 0% клипа, на контакте NO, центр в 0.707,
стало 100% клипа, на контакте YES, центр в 0.147. Ни поза щита, ни клип при этом не менялись.
Грабли: дефект был невидим ровно потому, что «точки заданы» — они действительно были заданы, просто
не там. Отсюда правило, которого не хватало: отсутствие сокета кричит (UnitView.RequireSockets,
RigSweep.ResolveSockets), а совпадение с ригом проверяется числом, а не глазами. Стандартные точки
обязаны быть у КАЖДОГО вида, включая ненужные киту: ближнему бойцу точка выстрела — хотя бы в нуле
(требование Макса).
Второе: судить блок общей долей перекрытия силуэта нельзя. Щит шире корпуса даёт честные 51% и когда
прикрывает сторону удара, и когда висит с дальней стороны. Поэтому RigSweep теперь отдельно считает
сторону врага и накрытие точки удара — по НАКЛОНЁННОМУ четырёхугольнику спрайта, а не по его AABB.
Владелец правды: UnitView_BoneStandart.prefab (значения точек), UnitView.RequireSockets (крик),
RigSweep (Socket, CoverageFront, CoversAim/AimOffset), базовый UnitView.prefab — владелец
самой конвенции.