【问题标题】:Resonance Audio Source - Unity3D Collision共振音频源 - Unity3D 碰撞
【发布时间】:2019-03-07 13:38:57
【问题描述】:

我将 Reasonance 音频源添加到一个对象,并希望在该对象与另一个对象之间发生碰撞时生成声音。

我遇到的问题是,只要对象进入“音频区域”(连接到具有特定半径的对象的蓝色磁盘),就会触发 Unity 中的 OnCollisionEnter。但是,我感兴趣的是物理碰撞发生的时间,而不是这种“音频”碰撞。

绕过它的一种方法是创建该对象的副本,而不使用跟随另一个对象运动的 Reasonance 音频源。然后触发对象副本的冲突。但我想知道是否有任何方法可以区分 Unity 中的这两种类型的碰撞?

这是一个例子。红球是我想要从中生成声音的对象,它具有 Reasonance 音频源作为组件。蓝色区域是从该组件创建的。每当蓝色圆盘接触灰色地板时,就会产生碰撞。我想禁用这种“音频”碰撞,并且只有在红球和灰色地板之间发生物理碰撞时才检测到碰撞。

编辑:发现问题。我一直在测试 PhysicsManager 属性(编辑/项目设置/物理),我将“默认接触偏移”设置为 0.01,通过更改与蓝色区域相同,所以我在错误的地方寻找问题。我现在将接触偏移更改为较小的值,一切正常。

【问题讨论】:

  • 如果您想要更具体的答案,请尝试提供您迄今为止尝试过的屏幕截图或代码示例。
  • 谢谢!我现在添加了示例的图像来说明问题

标签: unity3d collision-detection


【解决方案1】:

在 PhysicsManager 属性(编辑/项目设置/物理)中,“默认接触偏移”定义了蓝色区域。将该值更改为较小的值以调整接触区域的大小。

旧答案:

在不了解您的场景或代码的情况下,我只能推测您可能想要关闭音频源碰撞并在与对象发生碰撞时手动触发它。只需附加一个监听碰撞的脚本,然后触发音频源的碰撞事件(或者只是播放声音)。

【讨论】:

  • 对,但是如何禁用音频冲突?我找不到音频碰撞和物理碰撞之间的任何区别。
  • 您可以使用没有冲突的普通音频源。从您的图像的外观来看,您可能还可以减小共振音频源的大小以使其适合球的半径。
  • 但是我不会使用比普通音频源更好的推理音频源,对吧?这个半径怎么改?如果改变它,这不会影响提供给用户的声音吗?感觉应该有一个更优雅的解决方案来解决这个问题?
  • 发生碰撞时您到底在做什么?你播放声音,改变音量吗?你在哪个碰撞上这样做?你能忽略来自音频源的碰撞事件并在对象的碰撞事件上启动音频吗?
  • 我想在两个物体物理碰撞时产生声音。我希望在碰撞时从这个对象生成特定的声音,它应该来自推理音频源,并且希望能够操纵这个声音,比如音量等。音频源是对象的一个​​组件,它是碰撞,Unity不区分音频源的碰撞和物理对象的碰撞。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多