我似乎找不到很多关于SKAudioNode的信息。我怎么才能只演奏一次?我不想重复这个声音。
我想要完成的是,每次子弹射出时,在spritekit中播放一个简短的激光声音。
发布于 2016-01-03 19:00:34
不幸的是,@KnightOfDragon的说法是不正确的(但我没有足够的声誉来发表评论)。
SKAudioNode是在iOS 9中引入的,它意味着取代SKAction.playSoundFileNamed(...),因为它的功能要强大得多(您可以将它作为子级添加到SpriteKit SKNode中,如果属性positional设置为true,则自动添加3D音频混合)。
为了在SKAudioNode中播放一次声音,请使用以下代码:
if #available(iOS 9, *) {
let pling = SKAudioNode(fileNamed: "pling.wav")
// this is important (or else the scene starts to play the sound in
// an infinite loop right after adding the node to the scene).
pling.autoplayLooped = false
someNode.addChild(pling)
someNode.runAction(SKAction.sequence([
SKAction.waitForDuration(0.5),
SKAction.runBlock {
// this will start playing the pling once.
pling.runAction(SKAction.play())
}
])
}
else {
// do it the old way
}更新
请看这里,如何在音频节点上使用操作:SKAction->Audio-Stuff。文件上说:
使用SKAction playSoundFileNamed:waitForCompletion:只适用于短杂费。长期运行的背景音乐使用AVAudioPlayer。
这确实是而不是的意思,SKAudioNode不应该用于一次性音频.使用playSoundFileNamed,您不能更改音量或暂停/停止播放等等。
发布于 2015-12-18 15:02:47
如果您正在尝试执行声音效果,则在创建该效果的雪碧上使用SKAction.playSoundFileNamed(...)。SKAudioNode更适合在游戏中播放音乐。
示例:
//we have ship as an SKSpriteNode
//lets fire laser
ship.runAction(SKAction.playSoundFileNamed("pewpewpew.caf",waitForCompletion:false));https://stackoverflow.com/questions/34358389
复制相似问题