Skip to content

Latest commit

 

History

History
106 lines (73 loc) · 3.23 KB

audio.md

File metadata and controls

106 lines (73 loc) · 3.23 KB

声音

游戏中的声音元素分为几类:

  • 环境音
    • 底噪
    • 鬼声音
  • 物理音效
    • 刚体碰撞
    • 刚体出入水体
    • 玩家脚步声
  • 交互音效

声音元素的实现采用 Unity 内集成的 Wwise 音频后端。 对于底噪等恒常的环境音,可以手动配置声音组件(如 Unity 原生的 AudioSource 或 Wwise 提供的组件)。 对于条件性触发或需要程序控制的音效,不应手动配置声音组件,而是交由脚本托管; 脚本会在开始运行后自动生成所需的组件并配置。

环境音

底噪

如上,可以手配。

但是做成程序化生成的白噪会更好,能做就做。

鬼声音

请参考草稿《声音程序计划》。

物理音效

刚体

游戏中,参与物理交互的刚体在相互碰撞、出入水体、被玩家走过时,都会被动发出声音。 它们的 GameObject 上需要挂载 RigidbodyAgent 组件。 这是项目自己的组件,用来标注刚体的信息,并让它们在初始化时自动注册到游戏的处理列表中。

刚体有自己的材质。 物理音效会根据刚体材质的不同,而拥有不同的音色。 目前有这些材质(缩进代表父子关系):

  • Default / 缺省
    • Stone / 石质
      • Ceramic / 瓷砖
    • Wood / 木质
      • LightWood / 轻木头
      • HeavyWood / 重木头
    • Plastic / 塑料
      • Rubber / 橡胶
    • Metal / 金属
      • Steel / 钢

刚体碰撞

两个刚体以一定速度碰撞时,会发出碰撞音效。 碰撞音效不仅与刚体的材质有关,也与接触面积和碰撞强度有关。

在碰撞发生时,参与碰撞的刚体会分别各自发出自己的碰撞音效。 每个刚体都会收到一个 OnRigidbodyCollided 的 Wwise 事件。 其有三个参数:

  • string 刚体材质。
  • float 接触面积。
  • float 碰撞动量(自身质量×碰撞相对法向速度)。

这个好调,不够可以再改。

Wwise 端在收到事件后,应该根据刚体材质,找到正确的碰撞音效类型,将其余参数传进去并触发。

刚体出入水体

刚体在出入水体时会有对应的音效。 与其余物理音效不同的是,这个音效并没有材质上的区别。 不管是什么刚体,在出入水体时都会发出相似的声音。

在 Wwise 端可以实现为随机选择。

玩家脚步声

玩家在刚体表面上行走时会每隔一定时间间隔触发一次脚步声。 游戏会临时在世界里生成一个空 GameObject,并赋予其发声的能力; 在声音播放完毕后即销毁。

这个负责播放声音的 GameObject 会在创建后立即触发 OnFootstep 的 Wwise 事件。 其有两个参数:

  • string 行走表面的材质。
  • bool 是否在奔跑。

同样可以调。 懒得区分走路跑步就甭区分了。

交互音效

交互音效是玩家做出某种交互操作时,发出的不在世界里的提示音效。 目前有两种:

  • 抓取物体 / OnGrabbingObject
  • 放下物体 / OnDroppingObject

以后可能再加。

交互发生时,游戏会在主相机的 Wwise 组件上触发对应的事件。