我正在使用SpriteKit为我的Mac OS项目使用Objective C,我试图在两个节点之间发生接触时反复播放某种声音。在再次播放之前,我不希望播放器等待声音完成。声音只有大约1秒钟,但它每0.5秒重复一次。我尝试过两种不同的方法,但都有问题。我可能没有正确设置。
我尝试使用以下代码让其中一个精灵播放声音:
[playBarNode runAction:[SKAction playSoundFileNamed:@"metronome" waitForCompletion:NO]];
声音按时完美播放,但声音被修改。这听起来像混响(回声)应用于它,它也失去了很多音量。
以下是我用来设置的代码:
-(void) initAudio {
NSString *path = [NSString stringWithFormat:@"%@/metronome.mp3", [[NSBundle mainBundle] resourcePath]];
NSURL *metronomeSound = [NSURL fileURLWithPath:path];
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:metronomeSound error:nil];
[_audioPlayer prepareToPlay];
}
稍后在代码中调用它:
[_audioPlayer play];
这个问题是它似乎要等到第一次完成播放才再次播放声音。基本上它没有多次播放。
我是否错误地设置了这个?我怎样才能解决这个问题?提前谢谢。
答案 0 :(得分:0)
重试方法1,但不是让精灵播放声音,而是通过场景播放声音
[self runAction:[SKAction playSoundFileNamed:@"metronome" waitForCompletion:NO]];
游戏内部SKScene类