|
|
本帖最后由 依依 于 2026-10-13 20:32 编辑
ShipCoordTool 舰船坐标工具 · 使用手册
一个给远行星号(Starsector)模组作者用的免费小工具:读取舰船贴图,鼠标悬停即显船坐标,一键生成碰撞框、武器位、引擎位,甚至直接导出 .ship 文件。
适用场景:画了新船贴图,但被 .ship 文件里的坐标和碰撞框折磨的各位同好。
一、环境要求
Windows 系统(7/10/11 均可)
无需安装 Java——程序自带运行时,解压即用
无任何依赖、不联网、不写注册表
二、启动方式
整个 ShipCoordTool 文件夹就是程序本体(含 exe、配置和自带运行时,不可只拷贝 exe 单个文件)。
双击 ShipCoordTool.exe 直接运行
或使用 启动坐标工具.bat
首次启动建议直接双击 exe。
三、界面速览[td]
区域 说明
右侧工具栏 全部功能按钮 + 模式下拉框
中间画布 贴图显示区,绿色十字 = 船坐标原点(贴图正中心)
底部状态栏 实时显示「像素坐标」和「船坐标」
底部输出区 操作记录、包围盒结果、导出信息
四、坐标系统(重要)
工具里同时存在两套坐标,务必分清:
像素坐标:以图片左上角为原点,(x, y)
船坐标:以图片正中心为原点,+x 向右,+y 向上——.ship 文件里用的就是这套
状态栏同时显示两者;工具栏「复制坐标块」和「导出SHIP」输出的都是船坐标。
五、快速上手(三步做完一艘船的骨架)
打开贴图:点「打开贴图」,或直接把 PNG 拖进窗口。首次会默认定位到你的 mod 的 graphics\ships 目录,之后记住上次位置。
分析包围盒:自动扫描透明区域,算出船体的实际范围,输出:
bounds 矩形:[x1, y1, x2, y2](4 值矩形格式,游戏完全支持)
collisionRadius 两种推荐值:
紧贴 = 半对角线(碰撞判定最贴合船体)
宽松 = 半对角线 × 1.5(经对比原版狼/猎犬等船实测,与原版数值习惯一致,推荐)
导出 .ship:填写舰船 ID、船名,选择碰撞半径模式,一键生成文件——武器位、引擎位、碰撞框、贴图路径全部自动写入。
六、功能详解1. 三种点(模式下拉框)[td]
模式 颜色 用途
武器点 红 导出为 weaponSlots(默认炮塔 TURRET / 小型 SMALL)
引擎点 蓝 导出为 engineSlots(默认 HIGH_TECH 风格)
碰撞点 黄 参与碰撞框计算
加点:选好模式 → 左键点击贴图。每加一个点,输出区会记录像素坐标和船坐标。
2. 点的编辑
双击某个点:弹出对话框,精确输入坐标
右键点:删除最近的点
方向键:微调最后加的点,每次 1 像素(按住 Shift = 10 像素)
Delete / Backspace:删除最后加的点
「清空点」:一键全部删除
画武器点时不必一枪命中——先点在大概位置,再用方向键微调或双击输入精确值,比反复点鼠标快得多。
默认是有镜像的,需要自己关掉
3. 缩放与平移
滚轮:以鼠标位置为中心缩放(0.05× ~ 16×)
「1x / 2x / 4x」:常用倍数快捷键
「适配窗口」:整图缩放至窗口大小,等比缩放,不变形
左键按住拖动:平移贴图(拖出 5 像素以上判定为平移,不会误加点)
4. 对称镜像对比
开关「镜像对比」后,画布会叠加一层红色半透明的水平镜像副本。若贴图左右完全对称,红色与本体完全重合;哪里露出红边,就是哪里画歪了。检查贴图对称性的利器。
5. 背景色
点「背景」弹出菜单:透明棋盘(默认,原版同款格子底)/ 黑 / 白 / 灰 / 自定义任意颜色。
6. 复制坐标块
把当前模式下所有点复制为 JSON 坐标块到剪贴板:
json
"locations": [ [-12, 30], [18, 44]],
可直接粘贴进 .ship 文件的 weaponSlots / engineSlots 里微调。
7. 点集保存 / 加载
点集可存为 CSV 文件(含图片名校验),下次打开同一张贴图后「加载点集」即可继续未完成的工作。换机器、隔天做都不怕丢。
8. 导出 .ship 详解
点「导出SHIP」后弹出对话框:
舰船 ID(hullId):默认按文件名智能推断(xxx_itera.png → itera_xxx),务必改成你 ship_data.csv 里的实际 ID
船名(hullName):显示名
碰撞半径:宽松(默认)/ 紧贴
碰撞框格式:碰撞点 ≥ 3 个 → 自动导出多边形顶点表(原版格式);不足 3 个 → 用分析包围盒的矩形
生成内容包含:
bounds(多边形或矩形)
collisionRadius(按所选模式)
weaponSlots:angle 0、arc 5、TURRET、SMALL,编号 WS 0001 起
engineSlots:angle 180、contrailSize 3、length 12、width 6、HIGH_TECH,编号顺延
spriteName:graphics/ships/<文件名>
UTF-8 带 BOM 编码(游戏官方文件同款,中文船名不乱码)
默认保存到贴图同目录,可直接改名放进 data\hulls\。
提示:导出的 .ship 是骨架,具体炮塔角度、槽位大小、引擎样式请按需在文件里微调。
9. 超大贴图处理
图片超过 12000 像素时弹窗询问:完整加载 / 降采样加载(推荐)。降采样模式省内存,坐标自动按原图换算(有少量舍入误差)
完整加载内存不足时,自动再次询问是否降采样
加载、缩放、包围盒分析全部在后台线程执行,大图也不会卡死界面;换图会自动取消上一次未完成的分析
10. 报错日志
所有异常自动记录到 %APPDATA%\ShipCoordTool\ShipCoordTool.log(超过 1MB 自动轮转为 .old.log)。遇到崩溃点工具栏「报错日志」直接打开文件,把内容反馈给作者即可快速定位。
七、常见问题(FAQ)
Q:为什么我导出的 .ship 进游戏没反应/报错? A:检查三件事——① hullId 是否与 ship_data.csv 的 id 完全一致;② 贴图是否放到了 graphics\ships\ 下;③ 文件编码是否为 UTF-8(本工具导出的没问题,手工改过的注意另存编码)。
Q:点不准,总是差 1-2 像素? A:先点个大概,再用方向键微调或双击输入精确坐标。
Q:双击怎么把点删了/加错了? A:单击=加点(220ms 内若双击则改为编辑,不会重复加点);右键才是删点。
Q:碰撞框用矩形还是多边形? A:简单船体用矩形完全够;复杂轮廓点 3 个以上碰撞点即导出原版同款多边形。
Q:中文界面乱码? A:用 exe 或 bat 启动;若从命令行启动 java 需要 -Dfile.encoding=UTF-8。
Q:collisionRadius 该填多少? A:直接选「宽松」(= 半对角线 × 1.5),经与原版狼级(贴图 52×96 → 半径 80)等实测对比,最接近原版数值习惯。
八、声明
免费工具,做船自用,顺手分享,无任何收费与广告
使用产生的任何 .ship 文件归你所有
如有 bug 或功能建议,欢迎反馈(报错日志发我即可)
祝各位做船顺利,早日出货!
下面是效果图
对了
解压后运行 不要直接运行!!!!!
解压后运行 不要直接运行!!!!!
解压后运行 不要直接运行!!!!!
重要的事情说三遍!!!!!
|
|