admin 管理员组文章数量: 1087677
声控游戏、语音输入控制,八分音符酱
经过一段搜索。。。我在B站找到大佬的教程/笑哭
... 683285037706#page=2
然后自己整理了下,通过这样的方式还有很多扩展玩法呢,看完记得设计一款自己的小游戏
附上最重要的代码:
/**语音录入类*获取到当前语音录入的音量*/
publicclassMicInput : MonoBehaviour
{//用于观察麦克风输入的音量大小
public float volume;
//在公司偷偷测试,不敢大声,所以把输入的音量翻倍了
public float difference = 3f;
//不同的设备、麦克风的声音大小是不同的,用来在游戏时调整合适的输入值
public Slider slider;//存放录制的语音
AudioClip micRecord;
//麦克风的设备名称
string device;private void Start()
{//读取麦克风设备名,一台手机或者电脑可以接入多个麦克风,下标为0读取第一个麦克风device = Microphone.devices[0];//开始录音,device麦克风名称;loop循环录制;lengthSec录制长度;frequency频率啥的,这里的44100是默认值micRecord = Microphone.Start(device, true, 999, 44100);
}private void Update()
{//取得当前输入的最大音量值volume = (float)Math.Round(GetMaxVolume(), 4) * difference * slider.value;
}///<summary>
///获取当前输入的音量最大值
///</summary>
///<returns>返回最大音量</returns>
float GetMaxVolume()
{float maxVolume = 0f;//定义一个float类型的数组用于存储这段录音的音量数组float[] volumeData = new float[128];//偏移样本,从当前麦克风所在位置开始读取intoffset = Microphone.GetPosition(device) - 128 + 1;if (offset < 0)//麦克风的开始位置通常是负数,规范偏移值{return 0;}//从offset位置开始,获取一段录音的数据并存放到volumeData数组中micRecord.GetData(volumeData, offset);//从取得的数组中找出最大值for (int i = 0; i < volumeData.Length; i++){float tempMax = volumeData[i];if (tempMax > maxVolume){maxVolume = tempMax;}}returnmaxVolume;
}}
?
本文标签: 声控游戏语音输入控制,八分音符酱
版权声明:本文标题:声控游戏、语音输入控制,八分音符酱 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1699083168a327154.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论