47 lines
1.7 KiB
C#
47 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
public class LineSpectrum : 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;
|
|
}
|
|
}
|
|
}
|