Files
kaiju/Assets/LineBarSpectrum.cs
T
2022-01-20 15:54:27 +11:00

42 lines
1.3 KiB
C#

using UnityEngine;
public class LineBarSpectrum : TripsitterAve {
private LineRenderer[] _lines;
private float AudioScale = 10;
private float Power = 1.5f;
public float LineWidth = 0.5f;
public float LineSpacing = 1.0f;
void Start() {
LineRenderer prefab = GameObject.Find("LineBar").GetComponent<LineRenderer>();
_lines = new LineRenderer[SpectrumSize];
for (int i = 0; i < SpectrumSize; i++) {
LineRenderer lineRenderer = GameObject.Instantiate(prefab);
lineRenderer.transform.parent = transform;
lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
lineRenderer.widthMultiplier = LineWidth;
lineRenderer.positionCount = 2;
_lines[i] = lineRenderer;
}
}
void Update() {
var spectrumData = GetSpectrumData();
for (int i = 0; i < SpectrumSize; i++) {
var line = _lines[i];
var audioScale = Mathf.Pow(spectrumData[i] * AudioScale, Power);
var points = new Vector3[2];
var x = LineSpacing * i;
points[0] = new Vector3(x, 0.0f, 0.0f);
points[1] = new Vector3(x, audioScale, 0.0f);
line.widthMultiplier = LineWidth;
line.SetPositions(points);
}
}
}