Genesis-3D 入门教程—27.音频处理

转载 2013年12月06日 10:55:42


声音是游戏中非常重要的组成部分,Genesis-3D提供了多样的声音特效处理方式,方便用户制作丰富多彩的声音效果。本例从基本音频属性、混音过滤器、音频监听器等方面展示音频处理效果;实现播放3D声音,场景内主角行走触发切换混音过滤器,用户输入空格切换音频监听器等功能。

混音过滤器:对3D声音数据进行特殊处理以模拟现实世界中环境音效的处理器,类似于现实世界中的调音台;

音频监听器:虚拟的三维场景中用来收听声音的接收器,类似于现实世界中人的耳朵。

1. 实现键盘输入控制人物行走。

2. 创建声音。

3. 为声音添加音源。

4. 设置音源基本属性。

音量:取值区间[0, 1],0静音,1最大

声音类型:选择2D类型时,监听器收听的声音从始至终保持一致;当选择3D类型时,监听器接收到的声音大小会根据其与音源之间的距离来判定,所以衰减方式、最小距离、最大距离属性只适用于3D类型。

衰减方式:线性:按照线性函数衰减,衰减较慢;倒数:按照倒数函数曲线衰减,衰减速度居中; 平方线性:按照平方倒数函数曲线衰减,衰减最快;

最小距离:在最小距离内音量保持初始值,不衰减

最大距离:超出最大距离后,音量一直保持最大距离时的数值,不再衰减

最大距离:超出最大距离后,音量一直保持最大距离时的数值,不再衰减

5. 添加音频监听器,默认情况下只需要在摄像机上添加一个音频监听器,本例中又在远处添加一个音频监听器,用于演示音频监听器的切换效果。

6. 编写脚本,实现根据场景内主角X坐标切换引擎内置混音过滤器,用户输入空格切换音频监听器等功能。

01 public class Sound : ScriptableClass
02     {
03         private const int CHANGE_DISTANCE = 50;
04  
05         public override void OnLoad()
06         {
07             //播放音频
08             Owner.GetComponent< SoundSource>().Play();
09  
10             //添加音频混音过滤器组件
11             Owner.AddComponent< SoundReverbFilterComponent>();
12  
13             //激活混音过滤器
14             Owner.GetComponent< SoundReverbFilterComponent>().Attach();
15         }
16  
17         public override void OnFrame()
18         {
19             //根据场景内主角X坐标切换引擎内置混音过滤器
20             float fPlayerPostionX = Player.Instance.PlayerPostion.X;
21             if (CHANGE_DISTANCE > fPlayerPostionX)
22             {
23                 Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.OFF;
24             }
25             else if ((2 * CHANGE_DISTANCE) > fPlayerPostionX)
26             {
27                 Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.BATHROOM;
28             }
29             else if ((3 * CHANGE_DISTANCE) > fPlayerPostionX)
30             {
31                 Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.STONECORRIDOR;
32             }
33             else if ((4 * CHANGE_DISTANCE) > fPlayerPostionX)
34             {
35                 Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.FOREST;
36             }
37             else if ((5 * CHANGE_DISTANCE) > fPlayerPostionX)
38             {
39                 Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.PARKINGLOT;
40             }
41             else
42             {
43                 Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.UNDERWATER;
44             }
45  
46             //切换音频监听器
47             if (Input.KeyDown(Code.Space))
48             {
49                 Actor childActor = Owner.GetChild(0);
50                 if (!childActor.IsActive)
51                 {
52                     childActor.Active();
53                 }
54                 else
55                 {
56                     childActor.Deactive();
57                 }
58             }
59         }
60     }

7. 将脚本挂载到声音。

8. 运行工程,体验效果。

 

Genesis-3D 入门教程—2.创建工程

该文章转载自Genesis-3D官网,更多教程请访问Genesis-3D官网:http://www.genesis-3d.com.cn 创建工程 开始制作一个游戏的第一步就是创建工程。...
  • u012993923
  • u012993923
  • 2013年12月04日 17:42
  • 587

Genesis-3D 入门教程—8.天空盒

该文章转载自Genesis-3D官网,更多教程请访问Genesis-3D官网:http://www.genesis-3d.com.cn 天空盒 在Genesis-3D的世界中,所有...
  • u012993923
  • u012993923
  • 2013年12月04日 17:57
  • 619

Genesis-3D 入门教程—10.粒子系统

该文章转载自Genesis-3D官网,更多教程请访问Genesis-3D官网:http://www.genesis-3d.com.cn 粒子系统 粒子系统是Genesis-3D编辑器里...
  • u012993923
  • u012993923
  • 2013年12月04日 18:01
  • 641

Genesis-3D新手入门教程集锦

专题介绍 Genesis-3D引擎由搜狐畅游投资3000万美元,耗时四年完成,开发团队近百人。它是中国首款自主研发的跨平台游戏引擎,同时也是全球首款3D商业级开源游戏引擎。本专题将围绕Genes...
  • pizi0475
  • pizi0475
  • 2015年07月09日 21:20
  • 863

Genesis-3D 入门教程—16.声音

该文章转载自Genesis-3D官网, 更多教程请访问Genesis-3D官网:http://www.genesis-3d.com.cn 声音 众所周知,声音系统是一个游戏中非常...
  • u012993923
  • u012993923
  • 2013年12月04日 19:10
  • 740

Genesis-3D 入门教程—15.物理

该文章转载自Genesis-3D官网, 更多教程请访问Genesis-3D官网:http://www.genesis-3d.com.cn 物理 物理组件是实现游戏功能的重要组成部...
  • u012993923
  • u012993923
  • 2013年12月04日 18:22
  • 563

Genesis-3D学习手册——27.导入资源

导入资源      制作游戏时你需要从外部导入资源,比如纹理、模型、声音等。当你把资源导入进工程时Genesis将会自动检测添加到工程文件夹中的资源。 导入和更新资源      如果你需...
  • u012993923
  • u012993923
  • 2014年01月27日 18:47
  • 694

Genesis-3D 入门教程—22.Actor模板功能

该文章转载自Genesis-3D官网, 更多教程请访问Genesis-3D官网:http://www.genesis-3d.com.cn Actor模板功能 Genesis-3D编辑器还...
  • u012993923
  • u012993923
  • 2013年12月06日 10:28
  • 713

Genesis-3D 入门教程—21.Actor树状关系

该文章转载自Genesis-3D官网, 更多教程请访问Genesis-3D官网:http://www.genesis-3d.com.cn Actor树状关系 在Genesis-3D编辑器...
  • u012993923
  • u012993923
  • 2013年12月06日 10:25
  • 876

Genesis-3D 入门教程—1.安装编辑器

安装编辑器 要使用Genesis-3D来制作游戏的第一步就是将Genesis-3D安装到您的计算机上。安装编辑器是一个很简单的过程,你可以简单点击连续下一步来完成整个过程。值得一提的是,如果您的电脑...
  • u012993923
  • u012993923
  • 2013年12月04日 17:39
  • 1400
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Genesis-3D 入门教程—27.音频处理
举报原因:
原因补充:

(最多只允许输入30个字)