43 lines
1.3 KiB
C#
43 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;
|
|
public LineRenderer prefab;
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|