我正在创建一个游戏,其中玩家与游戏者数量相比移动一定距离。例如。如果玩家在现实生活中窃窃私语,游戏中的角色会稍微移动,而如果玩家大喊,角色也会移动很多。我的代码可以工作,但是会产生很多不一致的结果。
有时候,窃窃私语显然比大喊大声,反之亦然。我使用了我在网上找到的这段代码,但是我不明白其中的数学原理。有人可以帮我吗?
private void Awake()
{
//init microphone input
if (Microphone.devices.Length > 0)
{
microphoneInput = Microphone.Start(Microphone.devices[0], true, 999, 44100);
microphoneInitialized = true;
}
else
{
print("There is no mic availiable");
}
}
private void Update()
{
if (microphoneInitialized == true)
{
// get mic volume
int dec = 128;
float[] waveData = new float[dec];
int micPosition = Microphone.GetPosition(null) - (dec + 1); // null means the first microphone
microphoneInput.GetData(waveData, micPosition);
//Getting a peak on the last 128 samples
float levelMax = 0;
for (int i = 0; i < dec; i++)
{
float wavePeak = waveData[i] * waveData[i];
if (levelMax < wavePeak)
{
levelMax = wavePeak;
}
}
float db = Mathf.Abs(levelMax) ;
micInputVolume = db;// Mathf.Sqrt(Mathf.Sqrt(levelMax) * 100);
}
//print("Mic volume = " + micInputVolume);
}