Unity3D 画线插件 Vectrosity 画一个一直循环的正弦函数曲线
直接贴代码
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(); }
把脚本添加到摄像机上
运行效果如图: