我正在尝试实施Apple已添加到SpriteKit的“3d”音频,但即使戴上耳机,声音也似乎根本没有定位。这是我的相关代码。
播放声音功能:
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)
}
我检查了包括监听器节点在内的所有节点的位置,它们都是正确的。监听器节点位于屏幕的中心,游戏块基本上是棋盘布局。
当我点击一个片段时,我真的不知道音频上有任何定位。它只是非常微妙吗?除了Apple说它是SpriteKit的一部分之外,找不到有关它的信息。
答案 0 :(得分:1)
原来我的错误是没有将listenerNode
添加到场景中,然后再将其设置为侦听器。
来自listener
上的文档:
如果指定了非零值,则它必须是场景中的节点。
游戏场景更新并验证:
let listenerNode = SKNode()
...
override func didMoveToView(view: SKView) {
listenerNode.position = view.center
addChild(listenerNode)
listener = listenerNode
}