/// <summary>
/// 画一个矩形Mesh
/// </summary>
/// <param name="onePoint">第一个点位置</param>
/// <param name="twoPoint">第二个点位置</param>
/// <returns></returns>
public Mesh CreatRectangleMesh(Vector3 onePoint, Vector3 twoPoint)
{
var dic = Vector3.Distance(onePoint , twoPoint); //计算第一个点与第二个点的距离
List<Vector3> points = new List<Vector3> ();
points.Clear();
float leftSkewing = 0.05f; //以点往左画偏移多大的面
float rightSkewing = -0.05f; //以点往右画偏移多大的面
points.Add ( new Vector3(leftSkewing,0,0)); //第一个点,以第一个点往左偏移0.05f
points.Add ( new Vector3(leftSkewing,0,dic)); //第二个点,以第一个点往左偏移0.05f
points.Add ( new Vector3(rightSkewing,0,dic) ); //第二个点,以第一个点往右偏移0.05f
points.Add( new Vector3(rightSkewing,0,0)); //第一个点,以第一个点往右偏移0.05f
var mesh = MeshDrawTriangleArrowSegment(points);
return mesh == null ? null : mesh;
}
/// <summary>
/// 画一个矩形
/// </summary>
/// <param name="points"></param>
/// <returns></returns>
public static Mesh MeshDrawTriangleArrowSegment(List<Vector3> points)
{
Mesh triangleMesh = new Mesh();
var first = points[0];
for (int i = 0; i < points.Count; i++)
{
points[i] = points[i] - first;
}
Vector3[] vers = new Vector3[points.Count];
for (int i = 0; i < points.Count; i++)
{
vers[i] = points[i];
}
triangleMesh.vertices = vers;
int[] trianglePoints = new int[] {0, 1, 2, 0, 2, 3};
triangleMesh.triangles = trianglePoints;
triangleMesh.RecalculateBounds();
triangleMesh.RecalculateNormals();
triangleMesh.RecalculateTangents();
return
triangleMesh;
}
unity画一个矩形Mesh
最新推荐文章于 2024-04-30 12:24:43 发布