/// <summary> /// 创建紫色杀伤盒 /// </summary> /// <param name="id"> 命令ID,用作字典key </param> /// <param name="list">底面四点链表</param> /// <param name="lower">下限高度</param> /// <param name="Ceiling">上限高度</param> public void CreateKillBox(int id, List <Vector3> list, float lower, float Ceiling, Color Fillcolor, Color BoradColor) { LineRenderer[] lineRenderers1 = new LineRenderer[4]; LineRenderer[] lineRenderers2 = new LineRenderer[4]; List <GameObject> meshList = GetMeshPrefab(lineRenderers1, 1); meshList.Add(GetMeshPrefab(lineRenderers2, 1)[0]); meshDic.Add(id, meshList); // 创建2个meshPrefab加入字典 // 第一个杀伤盒 MeshFilter meshFilter1 = meshList[0].GetComponent <MeshFilter>(); // 获取meshfilter meshList[0].GetComponent <MeshRenderer>().material.color = Fillcolor; Vector3[] vector3s1 = PhysicsMath.CheckVector(list); // 使数组逆时针排序 DrawTriangles.DrawPolygon(vector3s1, lower, meshFilter1, lineRenderers1, BoradColor); // 画出图形 // 第二个杀伤盒 MeshFilter meshFilter2 = meshList[1].GetComponent <MeshFilter>(); // 获取meshfilter meshList[1].GetComponent <MeshRenderer>().material.color = Fillcolor; List <Vector3> CeilingList = new List <Vector3>(); // 中层顶点集合 foreach (var item in list) { CeilingList.Add(item + Vector3.up * lower); } Vector3[] vector3s2 = PhysicsMath.CheckVector(CeilingList); // 使数组逆时针排序 DrawTriangles.DrawPolygon(vector3s2, Ceiling - lower, meshFilter2, lineRenderers2, BoradColor); // 画出图形 }
/// <summary> /// 创建扇形防空区 /// </summary> /// <param name="id"> 命令ID,用作字典key </param> /// <param name="origin">起始点</param> /// <param name="tarPoint">水平最远距离点</param> /// <param name="alpha">横向张角</param> /// <param name="theta">纵向张角</param> public void CreateSector(int id, Vector3 origin, Vector3 tarPoint, float alpha, float theta, Color Fillcolor, Color BoradColor) { LineRenderer[] lineRenderers = new LineRenderer[4]; List <GameObject> meshList = GetMeshPrefab(lineRenderers, 1); meshDic.Add(id, meshList); MeshFilter meshFilter = meshList[0].GetComponent <MeshFilter>(); meshList[0].GetComponent <MeshRenderer>().material.color = Fillcolor; Vector3[] vertices = PhysicsMath.GetSectorPoints_2(origin, tarPoint, alpha, theta); DrawTriangles.DrawPolygon(vertices, meshFilter, lineRenderers, BoradColor); }
/// <summary> /// 创建通用多边形区域 /// </summary> /// <param name="id"> 命令ID,用作字典key </param> /// <param name="list">下底面点链表</param> /// <param name="height">高度</param> public void CreatePolygon(int id, List <Vector3> list, float height, Color Fillcolor, Color BoradColor) { LineRenderer[] lineRenderers = new LineRenderer[4]; List <GameObject> meshList = GetMeshPrefab(lineRenderers, 1); // 获取mesh meshDic.Add(id, meshList); // 加入字典 MeshFilter meshFilter = meshList[0].GetComponent <MeshFilter>(); // 获取meshfilter meshList[0].GetComponent <MeshRenderer>().material.color = Fillcolor; Vector3[] vector3s = PhysicsMath.CheckVector(list); // 使数组逆时针排序 DrawTriangles.DrawPolygon(vector3s, height, meshFilter, lineRenderers, BoradColor); // 画出图形 }