diff --git a/Assets/Resources/Units/art_size.csv b/Assets/Resources/Units/art_size.csv index 5a1eb95d..8e63d6b7 100644 --- a/Assets/Resources/Units/art_size.csv +++ b/Assets/Resources/Units/art_size.csv @@ -1,128 +1,128 @@ -art,mounted,eye_px,face_px,head_px,crown_px,body_px,size_px,lock,adjust,note -cc_archer,0,125.1,250,444.0,249.0,744,736.3,1,, -cc_boss_bianxi,0,172.1,471,556.0,266.0,835,1010.0,,1.05, -cc_boss_caiyang,1,91.1,184,352.0,198.0,847,556.4,,, -cc_boss_caocao,0,135.0,288,446.0,260.0,808,794.6,1,, -cc_boss_caohong,0,155.4,335,546.0,304.0,843,1013.1,,1.12, -cc_boss_caoren,0,148.1,303,519.0,282.0,829,984.4,,1.15, -cc_boss_chezhou,0,133.1,304,424.0,249.0,804,772.1,,, -cc_boss_chunyudao,0,125.6,264,497.0,256.0,829,874.9,,1.15, -cc_boss_gaolan,0,119.4,251,462.0,229.0,772,806.5,,1.15, -cc_boss_hanfu,0,131.8,316,525.0,246.0,815,808.5,,, -cc_boss_kongxiu,0,159.0,326,725.0,317.0,875,1066.5,,1.12, -cc_boss_lidian,0,124.7,260,451.0,258.0,814,846.8,,1.15, -cc_boss_liudai,0,118.3,258,487.0,227.0,774,778.4,,1.12, -cc_boss_lvkuang,1,92.2,193,372.0,201.0,903,576.0,,, -cc_boss_lvxiang,1,89.7,185,340.0,202.0,863,542.5,,, -cc_boss_maojie,0,139.3,330,448.0,292.0,804,849.2,,, -cc_boss_mengtan,1,95.6,185,363.0,204.0,853,578.7,,, -cc_boss_qinqi,0,122.5,254,449.0,246.0,814,837.5,,1.15, -cc_boss_wangzhi,0,135.3,322,553.5,255.0,811,826.7,,, -cc_boss_wangzhong,0,125.2,269,450.0,247.0,783,847.6,,1.15, -cc_boss_xiahoudun,1,103.4,0,0,0,867,608.6,,,눈 수동 실측 2026-11-10: 왼눈 x 408.0 · 오른눈 = 수염 가운데 459.7 대칭 511.4(안대) -cc_boss_xiahouen,1,87.5,172,341.0,195.0,840,536.8,,, -cc_boss_xiahoujie,1,94.2,182,369.0,217.0,845,579.5,,, -cc_boss_xuchu,0,154.9,353,487.0,189.0,854,1008.6,,1.18, -cc_boss_xuhuang,0,151.7,319,763.0,321.0,805,1011.8,,1.08, -cc_boss_yanming,0,112.0,239,425.0,233.0,786,799.7,,1.18, -cc_boss_yujin,0,138.4,303,627.0,384.0,844,1059.0,,1.15, -cc_boss_zhanghe,0,112.3,228,477.0,235.0,853,793.0,,1.15, -cc_cavalry,1,91.9,186,346.0,193.0,849,540.9,1,, -cc_infantry,0,125.3,252,444.0,253.0,765,737.5,1,, -cc_spear,0,124.1,255,481.0,243.0,785,730.4,1,, -chunyuqiong,1,96.0,190,411.0,191.0,917,620.3,,1.08, -dianwei,0,167.4,413,551.0,269.0,843,1132.7,,1.2, -diaochan,0,158.2,320,569.5,320.0,911,1006.6,,1.08, -dongxi,0,116.2,245,437.5,220.0,757,759.5,,1.12, -dongzhuo,0,120.9,448,517.0,442.0,931,1070.7,,1.05, -dz_archer,0,123.3,257,448.5,251.0,745,725.7,1,, -dz_boss_caoxing,0,140.7,310,585.0,274.0,804,957.6,,1.15, -dz_boss_chengong,0,157.8,376,532.0,290.0,892,980.1,,1.08, -dz_boss_gaoshun,0,132.2,275,473.0,252.0,798,888.3,,1.15, -dz_boss_huaxiong,0,116.7,263,444.0,230.0,774,827.7,,1.18, -dz_boss_huzhen,1,87.5,183,344.0,184.0,836,538.6,,, -dz_boss_lvbu,1,75.8,173,387.5,123.0,819,446.1,1,, -dz_boss_zhangliao,1,95.7,203,430.0,197.0,876,582.6,,, -dz_cavalry,1,96.2,197,364.0,207.0,873,566.2,1,, -dz_infantry,0,139.1,304,507.0,259.0,844,818.7,1,, -dz_spear,0,117.2,247,500.0,237.0,818,689.8,1,, -guanping,0,132.9,306,540.0,239.0,770,878.2,,1.1, -guanyu,0,122.7,287,568.5,214.0,725,722.2,1,, -guojia,0,147.2,366,528.0,267.0,854,969.6,,1.12, -hanxuan,0,113.5,262,477.0,234.0,793,791.0,,1.12, -hgj_archer,0,154.7,376,573.0,298.0,833,910.5,1,, -hgj_boss_chengyuanzhi,0,137.2,395,478.5,233.0,740,875.3,,1.1, -hgj_boss_dengmao,0,146.1,346,515.0,250.0,803,894.4,,1.05, -hgj_boss_guanhai,0,144.2,366,822.0,244.0,826,1075.6,,1.18, -hgj_boss_peiyuanshao,0,134.3,304,531.0,273.0,736,903.9,,1.1, -hgj_boss_zhangbao,0,155.7,371,548.0,258.0,804,907.1,,, -hgj_boss_zhangjiao,0,147.8,341,524.0,341.0,854,869.9,1,, -hgj_boss_zhangliang,0,160.1,370,649.0,269.0,882,1108.2,,1.15, -hgj_cavalry,1,107.4,242,439.0,214.0,879,632.1,1,, -hgj_infantry,0,161.5,387,660.0,292.0,850,950.6,1,, -hgj_spear,0,168.5,377,584.5,293.0,862,991.8,1,, -huangzhong,0,148.8,394,503.0,230.0,797,875.8,1,, -jiangwei,0,114.2,245,481.0,230.0,804,790.6,,1.15, -jianyong,0,164.8,367,515.0,257.0,786,906.8,,, -jiaxu,0,146.4,334,468.0,269.0,843,968.1,,1.15, -jinxuan,0,128.2,289,536.0,257.0,772,932.8,,1.2, -jz_boss_caimao,0,131.1,278,511.0,248.0,805,902.4,,1.18, -jz_boss_caixun,0,143.2,320,543.0,296.0,833,1027.4,,1.18, -jz_boss_caizhong,0,139.4,324,509.0,276.0,872,1006.3,,1.2, -jz_boss_chensun,0,111.4,235,394.0,219.0,749,767.7,,1.18, -jz_boss_wenpin,0,117.1,260,429.5,243.0,822,851.4,,1.22, -jz_boss_zhangwu,1,84.7,177,332.0,188.0,862,521.2,,, -jz_boss_zhangyun,0,139.5,298,515.0,277.0,871,998.8,,1.2, -lijue,1,93.4,182,384.0,185.0,901,557.5,,, -lingtong,0,139.3,414,585.0,285.0,853,1006.1,,1.1, -liubei,0,142.2,373,478.0,243.0,752,837.0,1,, -liufeng,1,95.8,192,364.0,202.0,851,580.1,,, -lusu,0,158.0,418,485.0,244.0,777,905.3,,1.05, -luxun,0,171.7,379,519.5,304.0,906,968.9,,, -lvmeng,0,147.3,309,501.0,262.0,824,944.9,,1.15, -machao,1,85.6,166,396.0,174.0,845,517.8,,, -menghuo,0,147.7,332,735.0,363.0,860,1076.2,,1.08, -mizhu,0,153.5,423,589.0,252.0,800,980.9,,1.05, -pangtong,0,163.8,405,546.0,277.0,800,929.3,,, -shu_archer,0,148.5,324,554.0,304.0,803,1024.4,,1.15, -shu_cavalry,1,95.2,187,361.0,197.0,848,575.9,,, -shu_infantry,0,140.1,309,524.0,287.0,881,993.0,,1.18, -shu_spear,0,116.3,263,519.0,243.0,807,851.2,,1.18, -shu_strategist,0,134.0,328,460.0,251.0,789,816.7,,1.05, -sunce,1,96.1,192,345.0,195.0,907,565.4,,, -sunqian,0,151.7,400,460.0,266.0,838,852.8,,, -sunquan,0,149.4,339,535.0,220.0,770,921.8,,1.05, -sunshangxiang,0,132.8,281,550.0,236.0,676,764.8,,, -taishici,0,146.9,403,632.0,268.0,777,997.5,,1.05, -wanglang,0,137.5,324,434.0,291.0,809,877.7,,1.05, -wei_boss_simayi,0,148.8,318,439.0,258.0,846,882.8,,1.08, -weiyan,0,127.7,257,452.0,246.0,764,857.9,,1.15, -wu_chengpu,0,112.9,227,427.0,205.0,717,722.9,,1.12, -wu_ganning,0,146.9,454,775.0,326.0,887,1102.3,,, -wu_huanggai,0,146.5,417,627.0,215.0,762,944.7,,, -wu_sunjian,0,171.2,411,537.0,269.0,876,1056.9,,1.12, -wu_zhouyu,0,136.3,328,449.5,244.0,823,812.6,,1.05, -xiahoumao,1,92.3,188,361.0,213.0,840,567.3,,, -xiahouyuan,0,125.6,265,447.0,252.0,791,868.2,,1.18, -xiaoqiao,0,158.2,343,577.0,292.0,859,995.8,,1.08, -xunyu,0,142.0,356,441.0,257.0,853,851.1,,1.05, -xushu,0,164.5,454,551.0,286.0,898,982.2,,1.05, -yanbaihu,0,174.8,388,669.0,330.0,923,1185.5,,1.15, -ys_boss_quyi,0,127.7,256,471.0,255.0,793,875.8,,1.15, -ys_boss_wenchou,1,88.3,182,392.0,181.0,913,579.3,,1.08, -ys_boss_yanliang,0,120.4,249,458.0,215.0,755,788.6,,1.15, -ys_gongsunzan,1,85.7,184,327.0,181.0,825,520.0,,, -ysu_boss_jiling,0,111.2,232,401.0,208.0,765,761.2,,1.18, -ysu_boss_xunzheng,0,116.2,234,439.0,215.0,755,750.9,,1.12, -yuanshao,0,131.8,275,520.0,250.0,822,846.8,,1.1, -yuanshu,0,154.9,384,515.0,208.0,879,965.5,,1.1, -zhangfei,1,106.3,0,0,0,917,625.7,1,,눈 수동 실측 2026-11-10: 눈+눈썹 붙은 어두운 덩어리 중심 x 403.0 · 509.3(v5 재디자인 · 자동 = 말 콧구멍 오검출) -zhanglu,0,158.9,371,490.0,284.0,926,991.7,,1.1, -zhangren,0,128.5,271,464.5,258.0,786,872.4,,1.15, -zhaofan,0,134.6,373,441.0,264.0,798,839.4,,1.05, -zhaoyun,1,100.4,199,393.0,192.0,926,590.9,1,, -zhoucang,0,173.3,453,598.0,276.0,856,1149.8,,1.15, -zhoutai,0,162.2,429,599.5,273.0,885,1045.9,,1.08, -zhugejin,0,160.2,372,501.0,270.0,870,954.7,,1.08, -zhugeliang,0,140.2,336,469.0,264.0,886,962.8,,1.18, -zhurong,0,118.3,0,0,0,773,821.6,,1.18,눈 수동 실측 2026-11-10: 눈 덩어리 중심 x 524.4 · 642.7(짙은 피부 = 피부 판정 밖) +art,mounted,eye_px,eye_up_px,face_px,head_px,crown_px,body_px,size_px,lock,adjust,note +cc_archer,0,125.1,474.3,250,444.0,249.0,744,736.3,1,, +cc_boss_bianxi,0,172.1,560.5,471,556.0,266.0,835,959.0,,0.997, +cc_boss_caiyang,1,91.1,641.0,184,352.0,198.0,847,556.4,,, +cc_boss_caocao,0,135.0,519.6,288,446.0,260.0,808,794.6,1,, +cc_boss_caohong,0,155.4,513.7,335,546.0,304.0,843,1013.1,,1.12, +cc_boss_caoren,0,148.1,515.2,303,519.0,282.0,829,984.4,,1.15, +cc_boss_chezhou,0,133.1,490.6,304,424.0,249.0,804,772.1,,, +cc_boss_chunyudao,0,125.6,483.7,264,497.0,256.0,829,874.9,,1.15, +cc_boss_gaolan,0,119.4,457.9,251,462.0,229.0,772,806.5,,1.15, +cc_boss_hanfu,0,131.8,525.9,316,525.0,246.0,815,808.5,,, +cc_boss_kongxiu,0,159.0,515.0,326,725.0,317.0,875,1066.5,,1.12, +cc_boss_lidian,0,124.7,453.1,260,451.0,258.0,814,846.8,,1.15, +cc_boss_liudai,0,118.3,461.8,258,487.0,227.0,774,778.4,,1.12, +cc_boss_lvkuang,1,92.2,629.7,193,372.0,201.0,903,576.0,,, +cc_boss_lvxiang,1,89.7,628.5,185,340.0,202.0,863,542.5,,, +cc_boss_maojie,0,139.3,485.9,330,448.0,292.0,804,849.2,,, +cc_boss_mengtan,1,95.6,643.7,185,363.0,204.0,853,578.7,,, +cc_boss_qinqi,0,122.5,457.0,254,449.0,246.0,814,837.5,,1.15, +cc_boss_wangzhi,0,135.3,504.0,322,553.5,255.0,811,826.7,,, +cc_boss_wangzhong,0,125.2,480.0,269,450.0,247.0,783,847.6,,1.15, +cc_boss_xiahoudun,1,103.4,621.6,0,0,0,867,608.6,,,눈 수동 실측 2026-11-10(눈 간격·눈 높이): 왼눈 x 408.0 · 오른눈 = 수염 가운데 459.7 대칭 511.4(안대) +cc_boss_xiahouen,1,87.5,635.6,172,341.0,195.0,840,536.8,,, +cc_boss_xiahoujie,1,94.2,617.7,182,369.0,217.0,845,579.5,,, +cc_boss_xuchu,0,154.9,661.0,353,487.0,189.0,854,958.2,,1.121, +cc_boss_xuhuang,0,151.7,497.4,319,763.0,321.0,805,1011.8,,1.08, +cc_boss_yanming,0,112.0,454.4,239,425.0,233.0,786,799.7,,1.18, +cc_boss_yujin,0,138.4,527.0,303,627.0,384.0,844,1059.0,,1.15, +cc_boss_zhanghe,0,112.3,494.0,228,477.0,235.0,853,793.0,,1.15, +cc_cavalry,1,91.9,594.3,186,346.0,193.0,849,540.9,1,, +cc_infantry,0,125.3,478.6,252,444.0,253.0,765,737.5,1,, +cc_spear,0,124.1,469.7,255,481.0,243.0,785,730.4,1,, +chunyuqiong,1,96.0,652.6,190,411.0,191.0,917,620.3,,1.08, +dianwei,0,167.4,582.7,413,551.0,269.0,843,1076.1,,1.14, +diaochan,0,123.8,459.4,251,514.5,244.0,771,796.1,,1.08, +dongxi,0,116.2,442.0,245,437.5,220.0,757,759.5,,1.12, +dongzhuo,0,120.9,485.3,448,517.0,442.0,931,1070.7,,1.05, +dz_archer,0,123.3,474.7,257,448.5,251.0,745,725.7,1,, +dz_boss_caoxing,0,140.7,482.5,310,585.0,274.0,804,957.6,,1.15, +dz_boss_chengong,0,157.8,546.6,376,532.0,290.0,892,980.1,,1.08, +dz_boss_gaoshun,0,132.2,504.6,275,473.0,252.0,798,888.3,,1.15, +dz_boss_huaxiong,0,116.7,510.0,263,444.0,230.0,774,827.7,,1.18, +dz_boss_huzhen,1,87.5,639.3,183,344.0,184.0,836,538.6,,, +dz_boss_lvbu,1,75.8,547.8,173,387.5,123.0,819,446.1,1,, +dz_boss_zhangliao,1,95.7,586.6,203,430.0,197.0,876,582.6,,, +dz_cavalry,1,96.2,630.9,197,364.0,207.0,873,566.2,1,, +dz_infantry,0,139.1,553.8,304,507.0,259.0,844,818.7,1,, +dz_spear,0,117.2,495.9,247,500.0,237.0,818,689.8,1,, +guanping,0,132.9,475.8,306,540.0,239.0,770,878.2,,1.1, +guanyu,0,122.7,463.4,287,568.5,214.0,725,722.2,1,, +guojia,0,147.2,520.4,366,528.0,267.0,854,969.6,,1.12, +hanxuan,0,113.5,476.2,262,477.0,234.0,793,791.0,,1.12, +hgj_archer,0,154.7,523.3,376,573.0,298.0,833,910.5,1,, +hgj_boss_chengyuanzhi,0,137.2,481.2,395,478.5,233.0,740,875.3,,1.1, +hgj_boss_dengmao,0,146.1,501.2,346,515.0,250.0,803,894.4,,1.05, +hgj_boss_guanhai,0,144.2,573.4,366,822.0,244.0,826,1021.8,,1.121, +hgj_boss_peiyuanshao,0,134.3,461.9,304,531.0,273.0,736,903.9,,1.1, +hgj_boss_zhangbao,0,155.7,492.4,371,548.0,258.0,804,907.1,,, +hgj_boss_zhangjiao,0,147.8,510.4,341,524.0,341.0,854,869.9,1,, +hgj_boss_zhangliang,0,160.1,603.4,370,649.0,269.0,882,1052.3,,1.092, +hgj_cavalry,1,107.4,651.2,242,439.0,214.0,879,632.1,1,, +hgj_infantry,0,161.5,553.1,387,660.0,292.0,850,950.6,1,, +hgj_spear,0,168.5,549.3,377,584.5,293.0,862,991.8,1,, +huangzhong,0,148.8,517.9,394,503.0,230.0,797,875.8,1,, +jiangwei,0,114.2,471.3,245,481.0,230.0,804,790.6,,1.15, +jianyong,0,164.8,482.4,367,515.0,257.0,786,906.8,,, +jiaxu,0,146.4,498.7,334,468.0,269.0,843,968.1,,1.15, +jinxuan,0,128.2,482.8,289,536.0,257.0,772,932.8,,1.2, +jz_boss_caimao,0,131.1,502.7,278,511.0,248.0,805,902.4,,1.18, +jz_boss_caixun,0,143.2,492.4,320,543.0,296.0,833,1027.4,,1.18, +jz_boss_caizhong,0,139.4,577.6,324,509.0,276.0,872,956.0,,1.14, +jz_boss_chensun,0,111.4,448.8,235,394.0,219.0,749,767.7,,1.18, +jz_boss_wenpin,0,117.1,492.1,260,429.5,243.0,822,851.4,,1.22, +jz_boss_zhangwu,1,84.7,664.4,177,332.0,188.0,862,521.2,,, +jz_boss_zhangyun,0,139.5,553.4,298,515.0,277.0,871,998.8,,1.2, +lijue,1,93.4,626.5,182,384.0,185.0,901,557.5,,, +lingtong,0,139.3,539.6,414,585.0,285.0,853,1006.1,,1.1, +liubei,0,142.2,450.0,373,478.0,243.0,752,837.0,1,, +liufeng,1,95.8,628.6,192,364.0,202.0,851,580.1,,, +lusu,0,158.0,481.0,418,485.0,244.0,777,905.3,,1.05, +luxun,0,171.7,562.0,379,519.5,304.0,906,968.9,,, +lvmeng,0,147.3,536.6,309,501.0,262.0,824,944.9,,1.15, +machao,1,85.6,621.0,166,396.0,174.0,845,517.8,,, +menghuo,0,147.7,531.8,332,735.0,363.0,860,1076.2,,1.08, +mizhu,0,153.5,485.4,423,589.0,252.0,800,980.9,,1.05, +pangtong,0,163.8,500.1,405,546.0,277.0,800,929.3,,, +shu_archer,0,148.5,486.2,324,554.0,304.0,803,1024.4,,1.15, +shu_cavalry,1,95.2,598.8,187,361.0,197.0,848,575.9,,, +shu_infantry,0,140.1,580.7,309,524.0,287.0,881,993.0,,1.18, +shu_spear,0,116.3,488.0,263,519.0,243.0,807,851.2,,1.18, +shu_strategist,0,134.0,476.6,328,460.0,251.0,789,816.7,,1.05, +sunce,1,96.1,629.1,192,345.0,195.0,907,565.4,,, +sunqian,0,151.7,515.8,400,460.0,266.0,838,852.8,,, +sunquan,0,149.4,476.7,339,535.0,220.0,770,921.8,,1.05, +sunshangxiang,0,132.8,419.9,281,550.0,236.0,676,764.8,,, +taishici,0,146.9,500.4,403,632.0,268.0,777,947.1,,0.997, +wanglang,0,137.5,494.3,324,434.0,291.0,809,877.7,,1.05, +wei_boss_simayi,0,148.8,501.9,318,439.0,258.0,846,882.8,,1.08, +weiyan,0,127.7,474.7,257,452.0,246.0,764,857.9,,1.15, +wu_chengpu,0,112.9,430.4,227,427.0,205.0,717,722.9,,1.12, +wu_ganning,0,146.9,532.3,454,775.0,326.0,887,1102.3,,, +wu_huanggai,0,146.5,502.7,417,627.0,215.0,762,897.5,,0.95, +wu_sunjian,0,171.2,605.6,411,537.0,269.0,876,1004.1,,1.064, +wu_zhouyu,0,136.3,525.5,328,449.5,244.0,823,812.6,,1.05, +xiahoumao,1,92.3,612.0,188,361.0,213.0,840,567.3,,, +xiahouyuan,0,125.6,492.0,265,447.0,252.0,791,868.2,,1.18, +xiaoqiao,0,136.3,433.9,299,496.0,267.0,738,872.0,,1.08, +xunyu,0,142.0,516.0,356,441.0,257.0,853,851.1,,1.05, +xushu,0,164.5,565.0,454,551.0,286.0,898,982.2,,1.05, +yanbaihu,0,174.8,576.2,388,669.0,330.0,923,1125.7,,1.092, +ys_boss_quyi,0,127.7,504.8,256,471.0,255.0,793,875.8,,1.15, +ys_boss_wenchou,1,88.3,649.4,182,392.0,181.0,913,579.3,,1.08, +ys_boss_yanliang,0,120.4,464.0,249,458.0,215.0,755,788.6,,1.15, +ys_gongsunzan,1,85.7,632.9,184,327.0,181.0,825,520.0,,, +ysu_boss_jiling,0,111.2,464.2,232,401.0,208.0,765,761.2,,1.18, +ysu_boss_xunzheng,0,116.2,461.5,234,439.0,215.0,755,750.9,,1.12, +yuanshao,0,131.8,502.1,275,520.0,250.0,822,846.8,,1.1, +yuanshu,0,154.9,546.0,384,515.0,209.0,879,965.5,,1.1, +zhangfei,1,106.3,633.4,0,0,0,917,625.7,1,,눈 수동 실측 2026-11-10(눈 간격·눈 높이): 눈+눈썹 붙은 어두운 덩어리 중심 x 403.0 · 509.3(v5 재디자인 · 자동 = 말 콧구멍 오검출) +zhanglu,0,158.9,587.1,371,490.0,284.0,926,991.7,,1.1, +zhangren,0,128.5,498.1,271,464.5,258.0,786,872.4,,1.15, +zhaofan,0,134.6,469.2,373,441.0,264.0,798,839.4,,1.05, +zhaoyun,1,100.4,655.1,199,393.0,192.0,926,590.9,1,, +zhoucang,0,173.3,538.3,453,598.0,276.0,856,1091.8,,1.092, +zhoutai,0,162.2,609.1,429,599.5,273.0,885,993.6,,1.026, +zhugejin,0,160.2,562.8,372,501.0,270.0,870,954.7,,1.08, +zhugeliang,0,140.2,529.3,336,469.0,264.0,886,962.8,,1.18, +zhurong,0,118.3,458.4,0,0,0,773,821.6,,1.18,눈 수동 실측 2026-11-10(눈 간격·눈 높이): 눈 덩어리 중심 x 524.4 · 642.7(짙은 피부 = 피부 판정 밖) diff --git a/Assets/Resources/Units/cc_boss_xuchu/front_idle/f000.png b/Assets/Resources/Units/cc_boss_xuchu/front_idle/f000.png index c404215e..10123f17 100644 Binary files a/Assets/Resources/Units/cc_boss_xuchu/front_idle/f000.png and b/Assets/Resources/Units/cc_boss_xuchu/front_idle/f000.png differ diff --git a/Assets/Resources/Units/diaochan/front_action/f000.png b/Assets/Resources/Units/diaochan/front_action/f000.png index c35097e3..ded3bd63 100644 Binary files a/Assets/Resources/Units/diaochan/front_action/f000.png and b/Assets/Resources/Units/diaochan/front_action/f000.png differ diff --git a/Assets/Resources/Units/diaochan/front_action/f000.png.meta b/Assets/Resources/Units/diaochan/front_action/f000.png.meta index cc448412..cbb8dd24 100644 --- a/Assets/Resources/Units/diaochan/front_action/f000.png.meta +++ b/Assets/Resources/Units/diaochan/front_action/f000.png.meta @@ -50,7 +50,7 @@ TextureImporter: spriteExtrude: 1 spriteMeshType: 0 alignment: 9 - spritePivot: {x: 0.5, y: 0.02049} + spritePivot: {x: 0.5, y: 0.02463} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 diff --git a/Assets/Resources/Units/diaochan/front_idle/f000.png b/Assets/Resources/Units/diaochan/front_idle/f000.png index ad39b653..da489dbd 100644 Binary files a/Assets/Resources/Units/diaochan/front_idle/f000.png and b/Assets/Resources/Units/diaochan/front_idle/f000.png differ diff --git a/Assets/Resources/Units/diaochan/front_idle/f000.png.meta b/Assets/Resources/Units/diaochan/front_idle/f000.png.meta index d4738f80..04022c94 100644 --- a/Assets/Resources/Units/diaochan/front_idle/f000.png.meta +++ b/Assets/Resources/Units/diaochan/front_idle/f000.png.meta @@ -50,7 +50,7 @@ TextureImporter: spriteExtrude: 1 spriteMeshType: 0 alignment: 9 - spritePivot: {x: 0.5, y: 0.02049} + spritePivot: {x: 0.5, y: 0.02463} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 diff --git a/Assets/Resources/Units/diaochan/front_ready/f000.png b/Assets/Resources/Units/diaochan/front_ready/f000.png index b029aafc..9ca44d14 100644 Binary files a/Assets/Resources/Units/diaochan/front_ready/f000.png and b/Assets/Resources/Units/diaochan/front_ready/f000.png differ diff --git a/Assets/Resources/Units/diaochan/front_ready/f000.png.meta b/Assets/Resources/Units/diaochan/front_ready/f000.png.meta index 37eebe5b..79100114 100644 --- a/Assets/Resources/Units/diaochan/front_ready/f000.png.meta +++ b/Assets/Resources/Units/diaochan/front_ready/f000.png.meta @@ -50,7 +50,7 @@ TextureImporter: spriteExtrude: 1 spriteMeshType: 0 alignment: 9 - spritePivot: {x: 0.5, y: 0.02049} + spritePivot: {x: 0.5, y: 0.02463} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 diff --git a/Assets/Resources/Units/diaochan/meta.json b/Assets/Resources/Units/diaochan/meta.json index 39b63c7d..8f61d1ae 100644 --- a/Assets/Resources/Units/diaochan/meta.json +++ b/Assets/Resources/Units/diaochan/meta.json @@ -2,15 +2,15 @@ "fps": 1, "ppu": 100, "frame": [ - 874, - 976 + 857, + 812 ], "pivot": [ 0.5, - 0.02049 + 0.02463 ], - "charHeightPx": 936, - "bodyHeightPx": 911, + "charHeightPx": 772, + "bodyHeightPx": 771, "clips": [ { "name": "front_idle", diff --git a/Assets/Resources/Units/xiaoqiao/front_action/f000.png b/Assets/Resources/Units/xiaoqiao/front_action/f000.png index 09d5ec5f..96b4b1eb 100644 Binary files a/Assets/Resources/Units/xiaoqiao/front_action/f000.png and b/Assets/Resources/Units/xiaoqiao/front_action/f000.png differ diff --git a/Assets/Resources/Units/xiaoqiao/front_action/f000.png.meta b/Assets/Resources/Units/xiaoqiao/front_action/f000.png.meta index ae4a6129..491000ba 100644 --- a/Assets/Resources/Units/xiaoqiao/front_action/f000.png.meta +++ b/Assets/Resources/Units/xiaoqiao/front_action/f000.png.meta @@ -50,7 +50,7 @@ TextureImporter: spriteExtrude: 1 spriteMeshType: 0 alignment: 9 - spritePivot: {x: 0.5, y: 0.02162} + spritePivot: {x: 0.5, y: 0.02509} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 diff --git a/Assets/Resources/Units/xiaoqiao/front_idle/f000.png b/Assets/Resources/Units/xiaoqiao/front_idle/f000.png index 606b06f8..c3643bcd 100644 Binary files a/Assets/Resources/Units/xiaoqiao/front_idle/f000.png and b/Assets/Resources/Units/xiaoqiao/front_idle/f000.png differ diff --git a/Assets/Resources/Units/xiaoqiao/front_idle/f000.png.meta b/Assets/Resources/Units/xiaoqiao/front_idle/f000.png.meta index f945b9b7..d0d32095 100644 --- a/Assets/Resources/Units/xiaoqiao/front_idle/f000.png.meta +++ b/Assets/Resources/Units/xiaoqiao/front_idle/f000.png.meta @@ -50,7 +50,7 @@ TextureImporter: spriteExtrude: 1 spriteMeshType: 0 alignment: 9 - spritePivot: {x: 0.5, y: 0.02162} + spritePivot: {x: 0.5, y: 0.02509} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 diff --git a/Assets/Resources/Units/xiaoqiao/front_ready/f000.png b/Assets/Resources/Units/xiaoqiao/front_ready/f000.png index 3f7b271e..a795b455 100644 Binary files a/Assets/Resources/Units/xiaoqiao/front_ready/f000.png and b/Assets/Resources/Units/xiaoqiao/front_ready/f000.png differ diff --git a/Assets/Resources/Units/xiaoqiao/front_ready/f000.png.meta b/Assets/Resources/Units/xiaoqiao/front_ready/f000.png.meta index 47d4f651..9b6ba4a3 100644 --- a/Assets/Resources/Units/xiaoqiao/front_ready/f000.png.meta +++ b/Assets/Resources/Units/xiaoqiao/front_ready/f000.png.meta @@ -50,7 +50,7 @@ TextureImporter: spriteExtrude: 1 spriteMeshType: 0 alignment: 9 - spritePivot: {x: 0.5, y: 0.02162} + spritePivot: {x: 0.5, y: 0.02509} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 diff --git a/Assets/Resources/Units/xiaoqiao/meta.json b/Assets/Resources/Units/xiaoqiao/meta.json index 7238cef5..7373e50f 100644 --- a/Assets/Resources/Units/xiaoqiao/meta.json +++ b/Assets/Resources/Units/xiaoqiao/meta.json @@ -2,15 +2,15 @@ "fps": 1, "ppu": 100, "frame": [ - 885, - 925 + 677, + 797 ], "pivot": [ 0.5, - 0.02162 + 0.02509 ], - "charHeightPx": 885, - "bodyHeightPx": 859, + "charHeightPx": 757, + "bodyHeightPx": 738, "clips": [ { "name": "front_idle", diff --git a/Assets/Resources/Units/yuanshu/front_idle/f000.png b/Assets/Resources/Units/yuanshu/front_idle/f000.png index d068a2c6..b85585f3 100644 Binary files a/Assets/Resources/Units/yuanshu/front_idle/f000.png and b/Assets/Resources/Units/yuanshu/front_idle/f000.png differ diff --git a/Assets/Resources/Units/zhurong/front_idle/f000.png b/Assets/Resources/Units/zhurong/front_idle/f000.png index f9446a07..b6aea447 100644 Binary files a/Assets/Resources/Units/zhurong/front_idle/f000.png and b/Assets/Resources/Units/zhurong/front_idle/f000.png differ diff --git a/Assets/Scripts/OutGame/UI/HeroScreens.cs b/Assets/Scripts/OutGame/UI/HeroScreens.cs index d713f62c..7b004b0e 100644 --- a/Assets/Scripts/OutGame/UI/HeroScreens.cs +++ b/Assets/Scripts/OutGame/UI/HeroScreens.cs @@ -94,6 +94,10 @@ namespace TKS.OutGame const float MountedDrop = 24f; /// 말 탄 유닛 전신(발 ~ 머리 끝) 높이 상한(카드 px) — 크기 표 실측이 튀는 그림(예 여포 size_px 449)도 다른 기병과 비슷하게. const float MountedMaxBody = 460f; + /// 눈 줄(카드 위에서 px · 크기 표 eye_up_px 가 있는 유닛) — 머리 끝 맞춤이면 관·투구가 낮은 유닛(전위·태사자)의 얼굴이 위로 뜸 → + /// 눈 높이를 맞춘다(PD 2026-11-10 「너무 위쪽에 등장하는 영웅은 내려」) · 값 = PD 확인 기존 20종의 머리 끝 맞춤 때 눈 높이 중앙값(걷는 216.5 · 기병 210.3). + const float EyeLine = 216f; + const float EyeLineMounted = 210f; /// false = 미보유(PD 2026-11-10 「유닛 목록에 장수들의 모습이 보이도록」) — 일러를 테마 card_locked_art 로 조금 어둡게 · 「미보유」 꼬리 칩 · 레벨 배지·성장 점 없음 public static Image Card(Transform content, OutGameSession s, HeroDb.Hero h, bool deployed, System.Action onTap, bool owned = true) @@ -125,12 +129,21 @@ namespace TKS.OutGame if (body > 0.5f && m.pivot != null && m.pivot.Length > 1) { float hgt = sp.rect.height; - float headY = Mathf.Clamp01((m.pivot[1] * hgt + body) / hgt); // 머리 끝 = 프레임 아래에서의 비율 bool mounted = a.Mounted; float k = UnitPx / size * (mounted ? MountedScale : 1f); if (mounted) k = Mathf.Min(k, MountedMaxBody / body); - float top = HeadTop + (mounted ? MountedDrop : FootDrop); - art = UiKit.Rect("Character", b, new Vector2(0.5f, 1f), new Vector2(0.5f, headY), new Vector2(0f, -top), sp.rect.size * k).gameObject.AddComponent(); + float pivotY, y; + if (a.EyeUpPx > 0.5f) + { + pivotY = Mathf.Clamp01((m.pivot[1] * hgt + a.EyeUpPx) / hgt); // 눈 줄 = 프레임 아래에서의 비율 + y = mounted ? EyeLineMounted : EyeLine; + } + else + { + pivotY = Mathf.Clamp01((m.pivot[1] * hgt + body) / hgt); // 머리 끝 = 프레임 아래에서의 비율(눈 높이 없는 그림) + y = HeadTop + (mounted ? MountedDrop : FootDrop); + } + art = UiKit.Rect("Character", b, new Vector2(0.5f, 1f), new Vector2(0.5f, pivotY), new Vector2(0f, -y), sp.rect.size * k).gameObject.AddComponent(); } else { diff --git a/Assets/Scripts/Runtime/UnitArt.cs b/Assets/Scripts/Runtime/UnitArt.cs index 6b6ca687..6b01fff2 100644 --- a/Assets/Scripts/Runtime/UnitArt.cs +++ b/Assets/Scripts/Runtime/UnitArt.cs @@ -44,6 +44,8 @@ namespace TKS public float SizePx; /// 말 탄 유닛(크기 표 mounted = 1) — 게임 배치 때 머리 끝 상한(BalanceConfig.mountedArtMaxTop)을 받는다. public bool Mounted; + /// 대기 그림의 눈 높이(발 위 px · 크기 표 eye_up_px) · 0 = 없음 — 영웅 목록 카드가 눈 줄을 맞춘다(PD 2026-11-10 「전위·태사자처럼 너무 위쪽에 보이는 영웅은 내려」). + public float EyeUpPx; /// 그림 속 몸(머리 끝~발) 세로 px — bodyHeightPx(무기 제외) 우선, 없으면 charHeightPx. public float BodyPx @@ -70,6 +72,7 @@ namespace TKS public const string SizeTable = "art_size"; static readonly Dictionary cache = new Dictionary(); static Dictionary sizes; + static Dictionary eyeUps; static HashSet mounted; /// 크기 표의 size_px(없으면 0). @@ -80,6 +83,14 @@ namespace TKS return id != null && sizes.TryGetValue(id, out v) ? v : 0f; } + /// 크기 표의 eye_up_px(대기 그림 눈 높이 · 발 위 px · 없으면 0). + public static float EyeUpOf(string id) + { + EnsureSizes(); + float v; + return id != null && eyeUps.TryGetValue(id, out v) ? v : 0f; + } + /// 크기 표 mounted = 1(말 탄 유닛). public static bool IsMounted(string id) { @@ -91,12 +102,13 @@ namespace TKS { if (sizes != null) return; sizes = new Dictionary(); + eyeUps = new Dictionary(); mounted = new HashSet(); var ta = Resources.Load(Root + SizeTable); if (ta == null) return; var lines = ta.text.TrimStart('').Split('\n'); var head = new List(lines[0].Trim().Split(',')); - int ia = head.IndexOf("art"), isz = head.IndexOf("size_px"), im = head.IndexOf("mounted"); + int ia = head.IndexOf("art"), isz = head.IndexOf("size_px"), im = head.IndexOf("mounted"), ieu = head.IndexOf("eye_up_px"); if (ia < 0 || isz < 0 || im < 0) { Debug.LogWarning("[TKS] 유닛 크기 표 열(art · mounted · size_px) 없음"); @@ -111,6 +123,8 @@ namespace TKS if (float.TryParse(c[isz], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out v) && v > 0f) sizes[c[ia]] = v; if (c[im] == "1") mounted.Add(c[ia]); + if (ieu >= 0 && ieu < c.Length && float.TryParse(c[ieu], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out v) && v > 0f) + eyeUps[c[ia]] = v; } } @@ -128,6 +142,7 @@ namespace TKS { cache.Clear(); sizes = null; + eyeUps = null; mounted = null; } @@ -147,7 +162,7 @@ namespace TKS } if (meta == null || meta.clips == null) return null; - var d = new UnitArtData { Id = id, Meta = meta, SizePx = SizeOf(id), Mounted = IsMounted(id) }; + var d = new UnitArtData { Id = id, Meta = meta, SizePx = SizeOf(id), Mounted = IsMounted(id), EyeUpPx = EyeUpOf(id) }; foreach (var c in meta.clips) { if (c == null || string.IsNullOrEmpty(c.name)) continue; diff --git a/Tools/unit_art_size.py b/Tools/unit_art_size.py index 70477a28..c8c4db30 100644 --- a/Tools/unit_art_size.py +++ b/Tools/unit_art_size.py @@ -30,7 +30,7 @@ from PIL import Image, ImageDraw, ImageFont from scipy import ndimage TABLE = 'Assets/Resources/Units/art_size.csv' -FIELDS = ['art', 'mounted', 'eye_px', 'face_px', 'head_px', 'crown_px', 'body_px', 'size_px', 'lock', 'adjust', 'note'] +FIELDS = ['art', 'mounted', 'eye_px', 'eye_up_px', 'face_px', 'head_px', 'crown_px', 'body_px', 'size_px', 'lock', 'adjust', 'note'] def head_width(img, eyes): @@ -196,7 +196,12 @@ def main(): eye = float(prev['eye_px']) # 자동으로 못 찾는 그림(안대·눈썹과 붙은 눈·짙은 피부) = 표에 적은 수동 실측 값 유지 lock = prev.get('lock', '') hw, cr = head_width(img, eyes) - rows.append({'art': art, 'mounted': mounted, 'eye_px': eye, 'face_px': face_width(img, eyes), 'head_px': hw, 'crown_px': cr, + # 눈 높이(발 위 px) = 영웅 목록 카드가 눈 줄을 맞추는 기준(PD 2026-11-10 「전위·태사자처럼 너무 위쪽에 보이는 영웅은 내려」) + foot_y = img.height - meta['pivot'][1] * img.height + eye_up = round(foot_y - (eyes[0][2] + eyes[1][2]) / 2, 1) if eyes else 0 + if not eyes and prev.get('note', '').startswith('눈 수동') and float(prev.get('eye_up_px') or 0) > 0: + eye_up = float(prev['eye_up_px']) + rows.append({'art': art, 'mounted': mounted, 'eye_px': eye, 'eye_up_px': eye_up, 'face_px': face_width(img, eyes), 'head_px': hw, 'crown_px': cr, 'body_px': body, 'size_px': float(prev['size_px']) if lock == '1' and prev.get('size_px') else '', 'lock': lock, 'adjust': prev.get('adjust', ''), 'note': prev.get('note', '')}) shots.append((art, meta, img, eyes))