Ios SKAudioNode位置音频似乎不起作用
我试图实现苹果在SpriteKit中添加的“3d”音频,但声音似乎根本没有定位,即使戴着耳机。这是我的相关代码 播放声音功能:Ios SKAudioNode位置音频似乎不起作用,ios,swift,audio,sprite-kit,Ios,Swift,Audio,Sprite Kit,我试图实现苹果在SpriteKit中添加的“3d”音频,但声音似乎根本没有定位,即使戴着耳机。这是我的相关代码 播放声音功能: func playTapSound(node: SKNode) { let tapSound = SKAudioNode(fileNamed: "glassNote") tapSound.positional = true tapSound.autoplayLooped = false node.addChild(tapSound)
func playTapSound(node: SKNode) {
let tapSound = SKAudioNode(fileNamed: "glassNote")
tapSound.positional = true
tapSound.autoplayLooped = false
node.addChild(tapSound)
tapSound.runAction(SKAction.play())
}
游戏场景:
let listenerNode = SKNode()
...
override func didMoveToView(view: SKView) {
listenerNode.position = view.center
listener = listenerNode
}
playTapSound
在用户点击游戏块节点时被调用
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touchedNode = scene.nodeAtPoint(sceneTouchPoint)
playTapSound(touchedNode)
}
覆盖函数触摸开始(触摸:设置,withEvent事件:UIEvent?){
让touchedNode=scene.nodeAtPoint(sceneTouchPoint)
播放TapSound(触控节点)
}
我已经检查了所有节点的位置,包括侦听器节点,它们都是正确的。监听器节点位于屏幕中央,游戏基本上是棋盘布局
当我轻触一段音乐时,我真的看不出音频上有任何定位。是不是非常微妙?除了苹果公司说它是SpriteKit的一部分之外,我找不到更多关于它的信息。结果证明我的错误是在将它设置为侦听器之前没有将我的
listenerNode添加到场景中
从侦听器上的文档中
:
如果指定了非nil值,则该值必须是场景中的节点
游戏场景已更新并验证:
let listenerNode = SKNode()
...
override func didMoveToView(view: SKView) {
listenerNode.position = view.center
addChild(listenerNode)
listener = listenerNode
}
我用SKAudioNode
实现了一个简单的测试。侦听器左侧和右侧的音频节点之间的差异非常明显。是的,我可能也应该这样做-minimum example.LMK如果您仍然没有听到差异,我将发布我的测试程序。谢谢。是的,我最近确实用一个空的场景和一个我点击的音频节点来测试它。工作得很好。在我发布的示例中,它的行为就像侦听器位于左下角一样,即使侦听器的位置是屏幕的中心。第1000次阅读这些文件(清醒而不是半睡半醒),我终于明白了这一点。看答案=]谢谢你的帮助,有时候你得聊聊天!有没有一种不用spritkit或scenekit的方法可以做到这一点?