//把圆分成多少分三角
public int n = 5;
//半径
public int r = 5;
// Start is called before the first frame update
void Start()
{
VertexHelper vh=new VertexHelper();
Mesh mesh = new Mesh();
//顶点坐标 顶点颜色 uv坐标
//添加顶点
vh.AddVert(Vector3.zero, Color.white,new Vector2(0.5f,0.5f));
float ang = 2 * Mathf.PI / n;//求每个的角度
for (int i = 0; i < n; i++)
{
//对边 求x
float x = Mathf.Sin(i * ang) * r;
//临边 求 y
float y=Mathf.Cos(i * ang) * r;
//添加顶点
float uvx = (x + r) / (2 * r);
float uvy = (y + r) / (2 * r);
vh.AddVert(new Vector3(x,0,y), Color.white, new Vector2(uvx, uvy));
if (i == n - 1)
{
//渲染
vh.AddTriangle(0, i + 1, 1);
}
else
{
vh.AddTriangle(0, i + 1, i+2);
}
}
vh.FillMesh(mesh);//附加给mesh
GetComponent<MeshFilter>().mesh = mesh;
GetComponent<MeshCollider>().sharedMesh = mesh;
Unity Mesh 创建圆 利用VertexHelper 设置UV坐标贴图
于 2023-09-11 16:25:51 首次发布