Unity3D 画线插件 Vectrosity 画一个一直循环的正弦函数曲线

来源:互联网 发布:电子家谱制作软件 编辑:程序博客网 时间:2024/04/27 20:28

直接贴代码

 public Material myMaterisl;    float fx;//曲线最左边的X坐标    float fy;//曲线趋于直线时y轴坐标    float fyMax = 0f;//曲线最高点    float fyContunt = 1f;//曲线于y轴坐标的交点    VectorLine energyLine;    Vector2[] energyLinePoints;    float timer;    float energyLevel = 4f;    void Start()    {        fx = 0f;        fy = 125f;        energyLinePoints = new Vector2[100];        energyLine = new VectorLine("Energy", energyLinePoints, myMaterisl, 5f, LineType.Continuous);        fnSetEnergyLinePointsMove();    }    void fnSetEnergyLinePoints()    {        for (int i = 0; i < energyLinePoints.Length; i++)        {            float x = Mathf.Lerp(70f, 470f, (0.0f + i) / energyLinePoints.Length);//设置点X的坐标            energyLinePoints[i].y = fy * (1f + Mathf.Sin(x) * 0.1f * energyLevel);            energyLinePoints[i] = new Vector2(x, energyLinePoints[i].y);//第一次设置点x,y的坐标        }    }    void fnSetEnergyLinePointsMove()    {        for (int i = 0; i < energyLinePoints.Length; i++)        {            float x = Mathf.Lerp(70f, 470f, (i + .0f) / energyLinePoints.Length);//设置点X的坐标            energyLinePoints[i] = new Vector2(x, fy);//第一次设置点x,y的坐标        }    }    void Update()    {    }    void FixedUpdate()    {        //让曲线向左运动        int i;        for (i = 0; i < energyLinePoints.Length - 1; i++)        {            energyLinePoints[i].y = energyLinePoints[i + 1].y;//让当前点的y值=它右面点的y值,就是曲线向左移动        }        timer += Time.deltaTime * Mathf.Lerp(10.0f, 20.0f, energyLevel);        energyLinePoints[i].y = fy * (1f + Mathf.Sin(timer) * .1f * energyLevel);          }    void LateUpdate()    {        energyLine.Draw();    }

把脚本添加到摄像机上
运行效果如图:

0 0
原创粉丝点击