先贴上效果图
一、用到的Unity相关技术
1. PolygonCollider2D
- 顶点编辑
2. LineRenderer
- 画线
3.Mesh
- 创建mesh的顶点
- 设置mesh的三角面
- 设置uv贴图
二、用到的算法
1. 计算两线段交点
2. 点集中的点按照线段分区域(线段上、线段上方、线段下方)
3. 点集中的点按顺时针排列
实现思路
- PolygonCollider2D勾勒出可被切割的区域,并得到组成图形的线和顶点
- 画线
- 计算画的线和图形的线交点
- 将顶点和交点按照画的线分区域(在线上、线上方、线下方)得到两个新的点集,为切割后的两部分点集
- 分离出的点顺时针排序,为创建mesh作准备
- 依照排序好的点集作为新图新顶点创建mesh顶点序列和三角面
- 重设uv坐标,将原texture贴到新的两部分mesh
为实现此功能的主题,将从上面8个实现思路分博客进行介绍,博客分配如下:
- Unity Mesh实现图片切割(一)- 线与顶点 –> 1,2
- Unity Mesh实现图片切割(二)- 顶点计算 –> 3,4,5
- Unity Mesh实现图片切割(三)- mesh绘制 –> 6,7
注:本博客只将大体思路,不设计具体详细代码。其中一些算法不定时在其他博客中详细讲解。