在 Unity 上的多个对象碰撞上播放相同的声音

问题描述 投票:0回答:2

我有一个掷骰子游戏。我有一个 6 个骰子,它在一个盒子里以随机方向施加随机力。现在,当骰子相互碰撞以及在盒壁内碰撞时,需要产生声音。

目前,当我为每个骰子添加声音并在骰子碰撞时触发它时,当所有骰子同时播放时声音会被连接。

有没有更好的方法可以让 6 个骰子相互碰撞以及与盒子壁碰撞时发出真实的声音?

unity-game-engine game-physics
2个回答
2
投票

当两个相同的声音以非常小的延迟播放时,您听到的类似法兰的效果就会发生,导致它们的波长自行放大和衰减。

为了避免这种影响,您有很多选择:

  1. 为了避免播放相同的音效,而延迟对用户来说是不可想象的。 (您现在可能正在玩每个骰子击中 sfx 两次)

  2. 使用不同的样本并随机播放。 (如果您无法生成新样本,请尝试修改您拥有的样本,只需将其音高更改 3%-10%,以获得足够的不同样本)

  3. 如果第二个选项不能满足您的需求(项目大小增加),您可以使用第三方插件(例如主音频)在运行时从一个声音中创建多个自定义音调的声音。

  4. 您可以在代码中更改音调(在运行时),并确保两次接近的击球永远不会以相同(或非常接近)的音调演奏


2
投票

要为多个物体碰撞产生逼真的碰撞声音实际上是相当困难的。

如果您对每个骰子到骰子或骰子到盒子的碰撞事件使用相同的音频剪辑,并在碰撞事件上触发它们,则最终结果听起来就像具有各种延迟的音频剪辑的回声版本。

如果您选择使用多种碰撞AudioClip作为池以供选择,只要您能保证在任何给定时间段内不会有两个碰撞声音同时播放相同的AudioClip,您可能会产生良好的最终结果。

最好的解决方案可能是获得几段真实场景(骰子在盒子里滚动和碰撞)的录音,并在游戏中模拟碰撞时随机播放一段。只要 AudioClip 的持续时间与模拟相匹配,就相对难以发现它是伪造的。

© www.soinside.com 2019 - 2024. All rights reserved.