在
Cocos Creator编辑中,多边形碰撞组件中有一个Regenerate Points的功能,这个功能可以根据组件依附的节点上的Sprite组件的贴图的像素点来自动生成相应轮廓的顶点。Threshold指明生成贴图轮廓顶点间的最小距离,值越大则生成的点越少。

白玉无冰源于兴趣,对其中的实现做一些研究。总结性的来说编辑器是分以下几步实现的。
-
读取图片所有的像素点数据(编辑器中用的是sharp)
-
计算围成轮廓的像素点(【逆时针:箭头方向的左侧必须有像素,箭头方向的右侧必须不能有像素】,算法应该是叫做Marching_squares,也可以参考cocos2d-x中的代码CCAutoPolygon.cpp
)
- 计算顶点(处理
Threshold, 【找最远距离,如果最大距离都小于阈值,就把中间的点全忽略】 )
- 对结果进行坐标转换



