line spectrum

This commit is contained in:
unknown committed 2022-01-20 14:19:25 +11:00
1 parent f3f8c85475
commit f4566bdfea
7 files changed
+206 -54

No files matched your search

+26 -41
View File
@@ -1,46 +1,31 @@
using UnityEngine;
public class LineSpectrum : TripsitterAve
{
private GameObject[] _spectrumBars;
private Vector3[] _originalPositions;
private Vector3 _originalScale;
public class LineSpectrum : TripsitterAve {
private GameObject[] _spectrumBars;
private Vector3[] _originalPositions;
private Vector3 _originalScale;
public GameObject Prefab;
public float AudioScale;
public float Power;
private float AudioScale = 10;
private float Power = 1.5f;
public void Start()
{
_spectrumBars = new GameObject[SpectrumSize];
_originalPositions = new Vector3[SpectrumSize];
_originalScale = Prefab.transform.localScale;
var width = Prefab.transform.localScale.x;
for (var i = 0; i < SpectrumSize; i++)
{
var spectrumBar = GameObject.Instantiate(Prefab);
spectrumBar.transform.parent = transform;
spectrumBar.transform.localPosition = new Vector3(width * i, 0.0f, 0.0f);
_spectrumBars[i] = spectrumBar;
_originalPositions[i] = spectrumBar.transform.localPosition;
}
Prefab.SetActive(false);
}
public void Update()
{
var spectrumData = GetSpectrumData();
for (var i = 0; i < SpectrumSize; i++)
{
var audioScale = Mathf.Pow(spectrumData[i] * AudioScale, Power);
var newScale = new Vector3(_originalScale.x, _originalScale.y + audioScale, _originalScale.z);
var halfScale = newScale / 2.0f;
_spectrumBars[i].transform.localPosition = new Vector3(_originalPositions[i].x + halfScale.x, _originalPositions[i].y + halfScale.y, _originalPositions[i].z + halfScale.z);
_spectrumBars[i].transform.localScale = newScale;
}
}
void Start() {
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
lineRenderer.widthMultiplier = 0.5f;
lineRenderer.positionCount = SpectrumSize;
Debug.Log("{SpectrumSize}");
}
void Update() {
LineRenderer lineRenderer = GetComponent<LineRenderer>();
var spectrumData = GetSpectrumData();
var points = new Vector3[SpectrumSize];
for (int i = 0; i < SpectrumSize; i++)
{
var audioScale = Mathf.Pow(spectrumData[i] * AudioScale, Power);
points[i] = new Vector3(i * 1.0f, audioScale, 0.0f);
}
lineRenderer.SetPositions(points);
}
}