无需登录 数据私有 本地保存

物理形体在线编辑器 - 为精灵创建碰撞多边形

30
0
0
0
100%
拖放精灵图片到此处,或点击「载入图片」按钮
多边形信息
顶点数量 0
多边形类型
面积 (px²)
图片尺寸 未载入
坐标原点 左上角

顶点列表 (点击选中)

暂无顶点,在画布上点击添加

快捷键: Ctrl+Z 撤销 Ctrl+Y 重做 Delete 删除选中顶点 A 添加模式 E 编辑模式 D 删除模式 滚轮 缩放 Shift+拖拽 平移 Esc 取消选择

常见问题与知识点

什么是碰撞多边形?为什么需要它?
碰撞多边形(Collision Polygon)是游戏物理引擎中用于精确检测物体碰撞的几何形状。相比简单的矩形或圆形碰撞体,多边形碰撞体可以更贴合精灵的实际轮廓,大幅提升碰撞检测的精度。在2D游戏中,它定义了精灵在物理世界中的"实体"边界。
凸多边形 vs 凹多边形 —— 有什么区别?
凸多边形的所有内角都小于180°,任意两点连线都在多边形内部。大多数物理引擎(Box2D、Chipmunk、Unity 2D Physics)要求碰撞体必须是凸多边形。凹多边形至少有一个内角大于180°,物理引擎通常会自动将其分解为多个凸多边形。本工具会自动检测多边形类型并给出提示。
顶点顺序重要吗?顺时针还是逆时针?
是的,顶点顺序非常重要。大多数物理引擎要求顶点按逆时针(CCW)顺序排列。如果顺序相反,碰撞检测可能失效或产生意外行为。Unity的PolygonCollider2D使用逆时针顺序,Box2D也要求逆时针。本工具在导出时自动确保正确的顶点顺序。
如何导出到 Phaser 3 游戏引擎?
在导出菜单中选择"Phaser 3",工具会生成可直接使用的JavaScript代码。您可以将生成的顶点数组用于sprite.body.setPolygon()或创建自定义碰撞体。顶点坐标相对于精灵的左上角原点。
为什么我导出的碰撞体位置不对?
请检查以下几点:①顶点坐标是相对于图片左上角的像素坐标;②如果您在游戏引擎中使用了不同的锚点(如中心锚点),需要相应调整坐标;③确保图片在游戏中的缩放与原始尺寸一致。您可以使用导出选项中的坐标偏移功能来适配不同的锚点设置。
自动凸包功能是如何工作的?
自动凸包使用Andrew单调链算法(Andrew's Monotone Chain),该算法在O(n log n)时间内计算出包含所有顶点的最小凸多边形。它会移除所有"凹陷"顶点,生成一个完全凸的多边形。这对于需要凸碰撞体的物理引擎非常实用。