美文网首页
013. mesh 圆形

013. mesh 圆形

作者: cmd_ts | 来源:发表于2020-03-01 08:16 被阅读0次
    03.png 032.png
    MeshFilter mesh_filter = gameObject.AddComponent<MeshFilter>();
            MeshRenderer mesh_renderer =  gameObject.AddComponent<MeshRenderer>();
            // gameObject.GetComponent<MeshRenderer>().material 
            Mesh mesh = mesh_filter.mesh;
            mesh.Clear();
            //设置顶点 N个顶点,就会有N-1个三角形
            float radius = 1;   //圆的半径
            int segments = 64;  //设置有64个三角形
            Vector3[] vertices = new Vector3[segments + 1];
            Vector3 centerCircle = new Vector3(0,0,0);
            vertices[0] = centerCircle;
            //Mathf.Deg2Rad 度转弧度:Mathf.Deg2Rad = (PI * 2) / 360
            float deltaAngle = Mathf.Deg2Rad * 360f / segments;
            float currentAngle = 0;
            //设置三角形顶点顺序,顺时针设置
            for (int i = 1; i < vertices.Length; i++)
            {
                float cosA = Mathf.Cos(currentAngle);
                float sinA = Mathf.Sin(currentAngle);
                vertices[i] = new Vector3(cosA * radius + centerCircle.x, sinA * radius + centerCircle.y, 0);
                currentAngle += deltaAngle;
            }
    
            //顶点
            int[] triangles = new int[segments * 3];
            //0,2,1 0,3,2 0,4,3 0,5,4 ..... 0,1,N
            for (int i = 0, j = 1; i < segments * 3 - 3; i += 3, j++)
            {
                triangles[i] = 0;
                triangles[i + 1] = j + 1;
                triangles[i + 2] = j;
            }
            triangles[segments * 3 - 3] = 0;
            triangles[segments * 3 - 2] = 1;
            triangles[segments * 3 - 1] = segments;
    
            mesh.Clear();
     
            mesh.vertices = vertices;
            mesh.triangles = triangles;
    

    相关文章

      网友评论

          本文标题:013. mesh 圆形

          本文链接:https://www.haomeiwen.com/subject/bubtkhtx.html