Я использую GVRAudioSDK для iOS для воспроизведения пространственных монофонических звуков.
Я не могу правильно воспроизвести звук, который уже играл.
(Вторая игра не слышна).
Обходной путь, который я нашел для безопасного воспроизведения звука, следующий (в настоящее время я воссоздаю звуковой объект каждый раз, когда мне нужно снова воспроизвести звук):
if !self.gvrAudioEngine.isSourceIdValid(self.mySourceId) || self.gvrAudioEngine.isSoundPlaying(self.mySourceId) {
self.gvrAudioEngine.stopSound(self.mySourceId)
self.mySourceId = self.gvrAudioEngine.createSoundObject(soundName)
}
Еще одна проблема, с которой я столкнулся, заключается в том, что при перемещении звука он воспроизводится неправильно (проблемы с производительностью):
var points = []
for t in 0..<nbPoints {
let current = from + directionVector * Float(t)
points.append(current)
}
let duration = 5.0
let nbPoints = 40
let unitDuration = duration / Double(nbPoints)
self.gvrAudioEngine.playSound(self.sourceId, loopingEnabled: false)
for i in 0..<points.count {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(i) * unitDuration, execute: {
self.gvrAudioEngine.setSoundObjectPosition(
self.sourceId, x: points[i].x, y: points[i].y, z: points[i].z)
})
}
Вот ссылка на API, который я использую:
https://developers.google.com/vr/ios/reference/interface_g_v_r_audio_engine