之前我们介绍了如何绘制一个三角形的Mesh。今天讲解一下如何绘制一个圆形的Mesh。
Unity3D中Mesh的基本单位是三角形,而圆形就是由许许多多的三角形组成的。那么我们就知道了绘制圆形的Mesh需要两个变量
public float Radius = 5; //半径
public int Segments = 50; //分割数
先加上基本的代码
[RequireComponent(typeof(MeshRenderer), typeof(MeshFilter))]
public class TestCircle : MonoBehaviour {
public float Radius = 5; //半径
public int Segments = 50; //分割数
private MeshFilter meshFilter;
void Awake()
{
meshFilter = GetComponent<MeshFilter>();
meshFilter.mesh = CreateMesh(Radius, Segments);
}
Mesh CreateMesh(float radius, int segments)
{
Mesh mesh = new Mesh ();
return mesh;
}
}
那么CreateMesh这个方法要怎么实现呢?
首先是vertices(顶点)
int vlen = 1 + segments;
Vector3[] vertices = new Vector3[vlen];
vertices[0] = Vector3.zero;
float angleDegree = 360;
float angle = Mathf.Deg2Rad * angleDegree;
float currAngle = angle / 2;
float deltaAngle = angle / segments;
for (int i = 1; i < vlen; i++)
{
float cosA = Mathf.Cos(currAngle);
float sinA = Mathf.Sin(currAngle);
vertices[i] = new Vector3 (cosA * radius, 0, sinA * radius);
currAngle -= deltaAngle;
}
vertices[0]保存圆心坐标,后面的segments个Vector3保存圆(边)上的点。
接着是triangles(三角形),里面实际保存的是vertices的下标
int tlen = segments * 3