我在我的场景中有一个SKAudioNode,但是来自它的音频并没有像我想的那样脱离范围(我的场景非常大,而且当这个节点离我很远的时候,它仍然是清晰的可听到的。当它在近距离时,减小它的体积会使它变得太精确--我需要改变随距离下降的体积)。
从文档中可以看出,我需要调整的参数是distanceAttenuationParameters in AVAudioEnvironmentNode。
当我查看SKScene时,我可以看到它有一个audioEngine AVAudioEngine属性,而这个属性又公开了一个mainMixerMode AVAudioMixer属性。但在所有这些地方,我都找不到AVAudioEnvironmentNode的句柄。
那么,如何访问使节点的音频在大场景中正确运行所需的参数呢?
发布于 2022-03-28 11:03:24
您可以在AVAudioEnvironmentNode的audioEngine的attachedNodes数组中找到它,这里是SKScene的一个扩展,它添加了一个计算属性来直接从任何SKScene访问它。
import Foundation
import SpriteKit
import AVFoundation
extension SKScene {
var audioEnvironmentNode : AVAudioEnvironmentNode? {
audioEngine.attachedNodes.first(where: {audioNode in
audioNode is AVAudioEnvironmentNode
}) as? AVAudioEnvironmentNode
}
}示例:
if let environmetNode = scene.audioEnvironmentNode {
environmetNode.distanceAttenuationParameters.distanceAttenuationModel = .linear
environmetNode.distanceAttenuationParameters.referenceDistance = 400
environmetNode.distanceAttenuationParameters.maximumDistance = 1500
}https://stackoverflow.com/questions/47962318
复制相似问题