SKAudioNode位置音频似乎不起作用

时间:2016-01-26 02:56:35

标签: ios swift audio sprite-kit

我正在尝试实施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的一部分之外,找不到有关它的信息。

1 个答案:

答案 0 :(得分:1)

原来我的错误是没有将listenerNode添加到场景中,然后再将其设置为侦听器。

来自listener上的文档:

  

如果指定了非零值,则它必须是场景中的节点。

游戏场景更新并验证:

let listenerNode = SKNode()
...
override func didMoveToView(view: SKView) {
    listenerNode.position = view.center
    addChild(listenerNode)
    listener = listenerNode
}