Unity中使用MeshFilter来制作六边形属性

来源:互联网 发布:工作流软件是什么 编辑:程序博客网 时间:2024/05/29 11:31

记得以前见过最多的六遍型属性显示就是再实况,NBA中,球员对比的时候特别清晰,前段时间项目中也需要做一个类似的属性对比,所以写出来一个简化版做记录和分享。

直接看代码

using UnityEngine;using System.Collections;public class NewBehaviourScript5 : MonoBehaviour{    public Vector3[] vector;    public Vector2[] uv;     MeshFilter meshFilter;    Mesh mesh;    LineRenderer linerederer;    float lineWidth = 0.05f;    int VERTICES_COUNT = 19;    void Start()    {     //通过object对象名 face 得到网格渲染器对象        meshFilter = (MeshFilter)gameObject.GetComponent(typeof(MeshFilter));        linerederer = GetComponent<LineRenderer>();        if(linerederer==null)            gameObject.AddComponent<LineRenderer>();        linerederer.SetWidth(lineWidth, lineWidth);        linerederer.SetVertexCount(VERTICES_COUNT);        linerederer.SetColors(Color.green, Color.green);        for (int i = 0; i < VERTICES_COUNT-1; i++)        {            //根据点将这个曲线链接起来            //第一个参数为 点的ID             //第二个 参数为点的3D坐标            //ID 一样的话就标明是一条线段            linerederer.SetPosition(i, vector[i]);        }       //通过渲染器对象得到网格对象mesh = meshFilter.mesh;        //设置顶点,这个属性非常重要        //三个点确定一个面,所以Vector3数组的数量一定是3个倍数        //遵循顺时针三点确定一面        mesh.vertices = vector;        //设置三角形索引,这个索引是根据上面顶点坐标数组的索引        //对应着定点数组Vector3中的每一项
        //数值数量依然要和顶点的数量一样        mesh.triangles = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 };    }}
在这儿我图方便直接用18个坐标分别做mesh的顶点,实际中不可能这样的啊,哈哈!实际只需要设置7个点,其中一个是中心点,和其余六个顶点!

直接上效果图

0 0
原创粉丝点击