公司最近让研究音频粒子方面的内容,然后在youtob上看到了比较详细的教程,跟着教程自己做了一个Demo
其主要用到了叶序的算法
private Vector2 PhyllotaxisPo(float degree, float scale, float count)
{
double angle = count * (degree * Mathf.Deg2Rad);
float r = scale * Mathf.Sqrt(count);
float x = r * (float)System.Math.Cos(angle);
float y = r * (float)System.Math.Sin(angle);
Vector2 temp = new Vector2(x, y);
return temp;
}
而音频粒子方面的脚本主要是下面的脚本;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
/// <summary>
/// 声道
/// </summary>
public enum Channel
{
/// <summary>
/// 立体声
/// </summary>
_stereoChannel,
/// <summary>
/// 左声道
/// </summary>
_leftChannel,
/// <summary>
/// 右声道
/// </summary>
_rightChannel
}
[RequireComponent(typeof(AudioSource))]
public class AudioPeer : MonoBehaviour
{
//public GameObject[] _atomicAttraction;
[Header("声道")]
public Channel _channel = new Channel();
private AudioSource _mAudioSource;
[Header("音频频谱样本")]
/// <summary>
/// 立体声
/// </summary>
public float[] _samples = new float[512];
/// <summary>
/// 左声道
/// </summary>
public float[] _sampleLeft = new float[512];
/// <summary>
/// 右声道
/// </summary>
public float[] _sampleRight = new float[512];
[Header("频段")]
public float[] _frepBand = new float[8];
[Header("频段缓冲器")]
public float[] _bandBuffer = new float[8];
[Header("频段减弱")]
private float