В настоящее время у меня есть SCNAudioSource, подключенный к SCNAudioPlayer. Этот аудиоплеер затем назначается SCNNode, чтобы мой звук использовал пространственную обработку звука SceneKits.
В нынешнем виде я могу изменить громкость каждого SCNNode с использованием SCNAudioSource.volume, запускаемого логической переменной vol. Ниже приведен фрагмент моего кода:
Код: Выделить всё
(audioSource, audioCount) = soundFileSelect(audioFileIndex: 0)
audioSource?.isPositional = true
if vol {
audioSource?.volume = 1.0
}
else {
audioSource?.volume = 0.0
}
let audioPlayer = SCNAudioPlayer(source: audioSource!)
geometryNode.addAudioPlayer(audioPlayer)
let play = SCNAction.playAudio(audioSource!, waitForCompletion: true)
let loopPlay = SCNAction.repeatForever(play)
geometryNode.runAction(loopPlay)
Я чувствую, что упускаю что-то простое, и поискал в Интернете документацию и примеры. но я действительно борюсь. Судя по документации API Apple, я вполне уверен, что это возможно. Насколько я могу судить, вам необходимо использовать свойство audioNode, связанное с SCNAudioPlayer, которое является частью протокола AVAudioMixing. Использование этого свойства громкости AVAudioMxing должно быть тем, что мне нужно!
Однако я, хоть убей, не могу понять, как реализовать этот процесс в коде в рамках моей текущей установки. Я могу получить доступ к mainMixer.volume/
Код: Выделить всё
outputvolumeКод: Выделить всё
audioPlayer.audioNode?.engine?.mainMixerNode.outputVolume=0
Любая помощь или примеры того, как это реализовать, будем очень признательны!
Подробнее здесь: https://stackoverflow.com/questions/439 ... time-swift
Мобильная версия