最近做了个吹气球的案例,远离就是获取设备的麦克风,对声音进行采样,我这里是手机测试。实现了吹气气球不断变大的效果。

直接上代码,工程源码文件我分享一个百度云地址。我的Unity版本是2018.2.1,手机测试时安卓。

项目工程地址:https://pan.baidu.com/s/15gK88rMI2yD0nZq3hJHTvQ

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

using DG.Tweening;

public class Audio : MonoBehaviour {

public Text text;

public AudioSource Myaudio;

public AudioSource QiqiuAudio;

public AudioSource BaozhaAudio;

float timer = 0;

public string sFrequency = "44100";

public GameObject prefab;

public GameObject Qiqiu;

public float Speed = 1;

float scale = 0;

bool IsBaozha = false;

// Use this for initialization

void Start () {

if (Application.isEditor)

return;

StartRecord();

StartCoroutine("Wait");

}

IEnumerator Wait()

{

yield return new WaitForSeconds(0.25f);

if (Volume > 10)

{

scale += 0.1f*Speed;

offset += 1.5f;

if (scale <= 1)

Qiqiu.transform.localScale = new Vector3(1+scale, 1+scale, 1+scale);

//爆炸

else

{

StopCoroutine("Wait");

IsBaozha = true;

StartCoroutine(BaoZhaEffect());

}

if (offset < 15)

{

if(Random.Range(0,1.0f)>0.5f)

StartCoroutine(RoateAndMove(offset, 0.15f));

else

StartCoroutine(RoateAndMove(offset, -0.15f));

}

else

offset = 0;

}

if(!IsBaozha)

StartCoroutine(Wait());

}

//场景一开始就开启录音功能

void StartRecord()

{

Myaudio.Stop();

Myaudio.loop = true;

Myaudio.mute = false;

Myaudio.clip = Microphone.Start(null, true, 1, int.Parse(sFrequency));

while (!(Microphone.GetPosition(null) > 0))

{

}

}

float offset = 0;

// Update is called once per frame

void Update () {

if(!Application.isEditor)

text.text = Volume.ToString();

if(Input.GetKeyDown(KeyCode.Space))

{

StartCoroutine(RoateAndMove(offset, 0.15f));

}

}

IEnumerator RoateAndMove(float offset,float timer)

{

Vector3 right, left, center;

right = new Vector3(0, 0, -offset);

left = new Vector3(0, 0, offset);

center = Vector3.zero;

Qiqiu.transform.DOLocalRotate(right, timer);

yield return new WaitForSeconds(timer);

Qiqiu.transform.DOLocalRotate(center, timer);

yield return new WaitForSeconds(timer);

Qiqiu.transform.DOLocalRotate(left, timer);

yield return new WaitForSeconds(timer);

Qiqiu.transform.DOLocalRotate(center, timer);

}

IEnumerator BaoZhaEffect()

{

QiqiuAudio.Play();

Qiqiu.transform.DOScale(Vector3.one, 0.2f);

yield return new WaitForSeconds(0.2F);

if(!BaozhaAudio.isPlaying)

BaozhaAudio.Play();

prefab.SetActive(false);

prefab.SetActive(true);

Qiqiu.SetActive(false);

}

public float Volume

{

get

{

if (Microphone.IsRecording(null))

{

// 采样数

int sampleSize = 128;

float[] samples = new float[sampleSize];

int startPosition = Microphone.GetPosition(null) - (sampleSize + 1);

// 得到数据

this.Myaudio.clip.GetData(samples, startPosition);

// Getting a peak on the last 128 samples

float levelMax = 0;

for (int i = 0; i < sampleSize; ++i)

{

float wavePeak = samples[i];

if (levelMax < wavePeak)

levelMax = wavePeak;

}

return levelMax * 99;

}

return 0;

}

}

public void ResetOnclck()

{

Qiqiu.SetActive(true);

Qiqiu.transform.localScale = Vector3.one;

scale = 0;

offset = 0;

IsBaozha = false;

StartCoroutine("Wait");

}

}

unity获取麦克风音量_Unity获取麦克风实现吹气球效果相关推荐

  1. unity获取麦克风音量_Unity获取麦克风音量(实现音效波浪效果)

    1.每个方块(Cube)为一个波浪添加脚本MusicDance 2.整体获取马克风音量大小脚本MusicManager MusicDancepublic class MusicDance : Mono ...

  2. ios 调整麦克风音量_iOS 获取麦克风音量

    项目需求要获取麦克风音量,然后界面做出反馈. 注意:录音之前需要先调用以下方法,因为播放和录制的模式是不同的 [[AVAudioSession sharedInstance] setCategory: ...

  3. ios 调整麦克风音量_ios 调整麦克风音量_如何在ios 7中获得麦克风音量?

    有一个观点来获得ios 7中的麦克风音量? NSURL *url = [NSURL fileURLWithPath:@"/dev/null"]; NSDictionary *set ...

  4. unity获取麦克风音量_Unity调取移动端的麦克风进行录音并播放

    本文实例为大家分享了Unity调取移动端的麦克风进行录音并播放的具体代码,供大家参考,具体内容如下 1.对MicroPhone类的理解 对麦克风的调用在Unity里主要是用到了MicroPhone这个 ...

  5. unity 模型渐变消失_Unity 雨水滴到屏幕效果

    文章目录 前言 一.实现过程 1.代码 2.代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果,文章介绍的是基础实现,读完这篇文章再去实现复杂效果会更得心应手些.我们先看更 ...

  6. unity获取麦克风音量_Unity3d:检查麦克风输入音量

    我想在可视化表示中使用用户在Unity3d中输入的麦克风音量 . 所以我'd like to get a value between 0 and 1 that tell how loud the us ...

  7. Android 获取 AudioRecord 麦克风音量大小并做选择性发送

    extends:http://blog.csdn.net/alvinhuai/article/details/8955127,http://mikespook.com/2010/11/android- ...

  8. java测量麦克风音量_Android-使用mediarecorder类获取当前麦克风音量值

    获取当前麦克风音量 2014年12月22日 0:21 首先是界面: 检测麦克风当前音量主要是用Android自己的类MediaRecorder来实现的,很多函数都是可以直接使用的,所以实现检测麦克风音 ...

  9. Vue3 中使用 AudioWorklet 获取麦克风音量

    Vue3 中使用 AudioWorklet 获取麦克风音量 最近公司在开发音视频项目,其中有个功能是用户监测麦克风讲话是否有波动:于是从各种技术网站想找关于Vue3的示例项目想着借鉴一番,但是功夫不负 ...

  10. 获取摄像头和麦克风权限_js获取浏览器摄像头和麦克风权限

    前言 项目中会使用到摄像头或麦克风设备,这就需要我们获取浏览器的摄像头和麦克风权限,权限是无法通过js操控的,必须由浏览器用户设置. 下面我来告诉大家如何获取浏览器的摄像头或麦克风的权限,使浏览器弹出 ...

最新文章

  1. Nature:FB和推特的数据是如何革新社会科学,改变世界的?
  2. Java8 Stream 使用
  3. python经典排序_python实现十大经典排序算法
  4. python123百钱买百鸡_day01笔记-百钱买百鸡(100文钱,必须买100只鸡,有几种方式)
  5. js截取字符串区分汉字字母代码
  6. GDB 调试命令讲解-转
  7. 留个坑,不知道为什么sqlite3要求组权限才能执行db:migrate,而可以直接执行db:......
  8. c语言练习题库网站,c语言练习题库网站_0.doc
  9. fiddler的安装与配置
  10. 数据科学 | Numpy入门教程
  11. sap apo 生产排程软件的架构和设计分析
  12. 微信小程序-微信支付
  13. 记一次Maya入门之材质和模型的导出
  14. 开发也可以如此简单!华为云发布两款开发工具
  15. 怎样用计算机求立方根的近似数,第三讲·立方根
  16. switch语句实现周一到周五输出weekday;周六周天weekend C语言
  17. 如何使用开源CMS建设网站
  18. 对于reflect: Elem of invalid type main.User类型的错误解释
  19. 习题8-2 在数组中查找指定元素 (15 分)(python)
  20. Android 电子罗盘--指南针(方向传感器的应用)

热门文章

  1. SVN 代码与文件管理小记
  2. unity Rigidbogy组件
  3. Atitit recv https req post code 接受https请求// npm install axios// 安装依赖:npm install body-parse
  4. Atitit. Toast alert loading js控件   atiToast v2新特性
  5. Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
  6. paip.Java Annotation注解的作用and 使用
  7. Vscode C环境配置(转)
  8. 操作系统如何恢复到原先状态
  9. (转) 数字加密货币全球资源汇总
  10. (转)刘巍然-关于公钥与私钥