从一开始,大家都以为音效可以一次性添加,不需要修改其他模块,也不需要很多代码。 那我只能按照常理思维去开发一套独立于其他人的代码。
第一步是封装fmod。 这很简单。 fmod有相应的接口。 您只需要用类对象封装它即可。 最后留下播放、暂停、停止、getStatus这些接口,这些接口是必须的,因为你需要随时知道当前声音的播放状态。 以便从外部知道是暂停还是播放。 然后每帧更新监听者的位置信息。
1.人物音效。 角色音效是这样的。 角色在奔跑、跳跃、释放魔法、受伤等时都会有相应的声音,我们需要在主角所在的适当位置听到。 相应的声音。 这时候就需要检测当前角色的动作,并遍历场景中所有角色的状态。 这实际上并不是一个很大的工作量如何制作游戏音效,因为你只需要遍历一定范围内的人,并根据需要检查动作状态即可。 因此,角色音效需要有两个接口。 一是角色何时开始播放某个动作游戏策划,二是角色动作是否更新到某个时间以及是否在该时间点播放音效。 然后是容器的设计。 我使用的是gamebryo引擎。 当角色开始时,会有一个textEvent触发“开始”事件。 然后我们确保角色属性每帧都更新。 此时减去动作触发的开始时间就可以判断是否已经到达声音的触发点。 这样我们就实现了整个场景中人物的3D声音。
2.场景音效。 场景音效需要添加到场景编辑器中并同时开发触发器。 当角色进入某个区域时自动触发,触发后自动播放声音; 同时场景中还可能有3D瀑布等,不需要触发如何制作游戏音效,可以给声音赋予衰减属性。 让这个声音循环播放,当角色到达那里时,它会随着距离而减弱。
3、特效音效是与特效一起播放的声音。 它们通常是非循环的、播放一次的音效。 把它添加到特效编辑器的模块中,和添加特效是一样的,只不过这个音效没有太多修饰符。
4.场景混音。 混音是当你进入某个区域,比如洞穴,你的讲话会有回声效果。 在水下说话会很乏味。 这也需要开发一个触发器,进入这个区域时会自动设置。 只需混合即可。 当离开该区域并触发事件时,混合将关闭。
5. UI音效可以添加到UI编辑器中或硬编码到游戏中。 最主要的是会有一个对应的csv文件,说明什么样的事件对应什么样的音效。
6.场景背景音乐,这个声音是立体的,不会随着位置的变化而变化游戏运营,所以很简单,自己玩就行了。
7、天气音效,比如打雷、下雨等,需要在天气系统中触发天气变化的地方写一个回调函数,在函数中指定播放音效即可。