音频效果
点击不同按钮,体验各种音效。
备注
本教程需要浏览器支持 Web Audio API。
使用 Web Audio API
PlayCanvas 允许充分利用 Web Audio API,为声音添加丰富的效果。本教程演示如何向音频片段添加多种效果。
配置
你可以在此处查看场景。Root 实体具有 Sound 组件,其中的一个槽位循环播放简短语音。如果不熟悉 Sound 组件,请先阅读基础教程。
Root 实体还具有 Script 组件,挂载了两个脚本:一个负责用户界面,另一个是本教程重点介绍的 application.js。
此脚本负责管理应用的音效。
使用 AudioNode
Web Audio API 可以创建各种音频节点,并将它们连接成音频路由图。音频播放时会依次经过节点处理,最终到达输出端,通常是扬声器。更多信息见 Web Audio API 文档。
本例使用 Convolver 节点。在应用脚本中按如下方式创建:
this.convolver = this.app.systems.sound.context.createConvolver();
接着使用多个音频片段作为卷积器的脉冲响应,原理见此文档。每个片段都是音频资源,根据点击的按钮选择资源,再将其内部缓冲区赋给卷积器缓冲区:
var asset = this[assetName];
this.convolver.buffer = asset.resource.buffer;
然后将卷积器连接到声音槽位:
this.entity.sound.slot('speech').setExternalNodes(this.convolver);
点击 None(无)按钮会清除所有效果,实际上就是调用槽位的 clearExternalNodes:
this.entity.sound.slot('speech').clearExternalNodes();
如果音频节点图更复杂,需要将其连接到槽位,请向 setExternalNodes 提供图中的第一个和最后一个节点,使 PlayCanvas 能正确将末端节点连接到扬声器。
Sound 组件 API 的更多信息见此处。