【问题标题】:How do you get positional audio to work in SceneKit?如何让位置音频在 SceneKit 中工作?
【发布时间】:2017-05-24 04:15:30
【问题描述】:

我无法让位置音频在 SceneKit 中工作。从 Xcode 生成的 SceneKit 游戏模板开始,我在 handleTap 方法的末尾添加了以下代码:

let ship = scnView.scene!.rootNode.childNode(withName: "ship", recursively: true)!  
if let source = SCNAudioSource(fileNamed: "art.scnassets/monoAudioTest.wav")  
{  
    source.volume = 1  
    source.isPositional = true  
    source.shouldStream = true  
    source.loops = true  
    source.load()  
    let player = SCNAudioPlayer(source: source)  
    ship.addAudioPlayer(player)  
}  

ship.runAction(SCNAction.move(to: SCNVector3(0, 0, -10000), duration: 8)) 

音频播放,但音量不会随着喷气机远离相机而降低。我是否遗漏了一些步骤或做出了一些错误的假设?

交叉发布到Apple Developer Forums

【问题讨论】:

  • 我刚试过,但是是从左到右移动而不是从近到远。我还使用了 MP3 而不是 WAV。我也没有听到任何位置变化。我尝试切换到 SCNAction.playAction,但没有任何区别。
  • 我在 SpriteKit 中的位置音频方面与 @HalMueller 有类似的体验。

标签: ios audio scenekit


【解决方案1】:

正如 Jed Soane 所述,Apple 在 Radar 中证实,问题是我的音频文件是立体声而不是单声道。只有单声道音频文件适用于位置音频。

【讨论】:

    【解决方案2】:

    您应该能够使用source.shouldStream = false 获得定位音频。

    【讨论】:

    • 这似乎完全荒谬,但它解决了我的问题。您认为这是一个错误还是只是记录不充分?
    • 这个解决方案对我不起作用,我已经尝试了所有我能想到的配置,随着节点的移动,音量永远不会改变。我也尝试过各种音频格式,包括 .aif、.mp3 和 .wav,没有区别。我在另一篇文章中读到 .aif 为某人工作,但对我来说没有运气。也许它与使用的编码有关。
    • @AdamEisfeld 您的音频文件是单声道吗?如果音频是立体声,SceneKit 将不会定位它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2010-12-14
    相关资源
    最近更新 更多