Итак, у нас есть линия с 64 точками. Каждая точка в определенный момент двигается и надо заполнить область под линией, по идее примерно также работает spriteShape. Можно сделать через spriteShape, но я в нем так и не разобрался, код движении линии очень простой. Буду благодарен за любую помощь!
public float range = 5000f;
public int number = 64;
public float[] znachenia;
public LineRenderer line;
public int spec;
[Range(0, 1)]
public float speedAnimation;
private void Awake()
{
for(int i = 0;i < number; i++)
{
Vector3 posInArray = new Vector3(0,0,0);
if(i>0)
posInArray = line.GetPosition(i-1);
line.SetPosition(i,posInArray+new Vector3(0.2f,0,0));
}
}
void Update () {
float[] spectrum = new float[spec];
GetComponent<AudioSource>().GetSpectrumData(spectrum, 0, FFTWindow.BlackmanHarris);
for(int i = 0;i < number; i++)
{
line.SetPosition(i,Vector3.Lerp(line.GetPosition(i),new Vector3(line.GetPosition(i).x,(range * spectrum[i] + znachenia[i])/2),speedAnimation));
znachenia[i] = range * spectrum[i];
}
}