Решили: кусок арта экспортируется с пивотом В ЕГО СУСТАВЕ, а не по центру спрайта; в риге визуал садится на узел вращения с нулевой локальной позицией. Три куска меча получают ОДИН общий пивот в точке хвата.
Почему: точка, вокруг которой часть вращается, принадлежит рисунку, а не сцене. Альтернатива —
пивот по центру (так сделаны белые плейсхолдеры) — требует на каждый кусок подобранного оффсета
узла: у меча базового рига это Sword.localPosition = (0.1856, -0.0102) при scale (0.651, 1.265),
то есть три числа, которые ничего не значат по отдельности и переподбираются при каждой замене арта.
С пивотом в суставе замена арта — это замена спрайта. Общий пивот у кусков меча — следствие того же:
рукоять, гарда и клинок собираются в меч сами, без взаимной подгонки.
Грабли:
- Хват рига стоит не там, где рука его держит.
Rotation Point (Grip)в 0.0345 от локтя, а рука нарисована с кулаком в 0.1047 — меч садился у локтя. ВBoneUnit_Storybookузел сдвинут override’ом варианта; база не тронута, и потомуRigProfile(он собран по базе) для варианта врёт — гизмо и расчёт аимов считают по старому хвату. Вердикт «двигать ли хват в базе» не вынесен. - Pillow читает этот PSD неверно: альфа рабочих слоёв приходит нулевой, композит слоёв выходит
мусором, а имена слоёв теряются вместе со сдвигом индексов (adjustment-слой пропускается, и
соответствие «слой N ↔ frame N» ломается). Рабочий инструмент —
psd-tools. UnityEngine.SpriteImportModeне существует — тип живёт вUnityEditor; вexecute_codeбезusingэто ловится только компилятором.- Арт друга оказался нарисован практически в масштабе рига: плечо 147.5 px против 139.6 у рига при
PPU 1000, направления костей расходятся на 0.9°. Подгонять масштаб не пришлось — но это совпадение,
а не гарантия, и следующий кусок арта надо мерить так же (
shoulder→elbowв пикселях противBoneLengthпрофиля), а не сажать на глаз.
Владелец правды: Assets/_Project/Prefabs/Bones/BoneUnit_Storybook.prefab, пивоты — в .meta
спрайтов Art/Sprites/Bone Animations/Bone Animation Sprites - Storybook/.