Files
kaiju/Assets/BarSpectrum.cs
T
2022-01-20 13:09:53 +11:00

47 lines
1.7 KiB
C#

using UnityEngine;
public class BarSpectrum : TripsitterAve
{
private GameObject[] _spectrumBars;
private Vector3[] _originalPositions;
private Vector3 _originalScale;
public GameObject Prefab;
public float AudioScale;
public float Power;
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;
}
}
}