2016-04-29 10 views
1

ゲームメニューでランダムなサウンドを再生しようとしていますが、実際には鳥が泣いています。 多くの鳥の音がありますが、私はそれらをランダム化してください。SpriteKitでオーディオをスケジュールする - Swift

私は以前の線に沿ってschedule使用して、これをやった:

void AppDelegate::bird1(){ 
    CocosDenshion::SimpleAudioEngine::sharedEngine()->stopAllEffects(); 
    CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("bird1.mp3"); 

:ランダムなサウンドなど、bird1()を再生し、このように

void HelloWorld::birdsound(){ 
    int soundnum=arc4random()%9+1; 

    switch (soundnum) { 
     case 1: 
      appdelegate->bird1(); 
      break; 
     case 2: 
      appdelegate->bird2(); 
      break; 
      . 
      . 
      . 
     case 9: 
      appdelegate->bird9(); 
      break; 
     default: 
      break; 
    } 
} 

this->schedule(schedule_selector(HelloWorld::birdsound),3.2); 

}

Xサウンドファイル(またはバードチープ)の音量をランダムな順序で小さなギャップ(または待機)を挟んで設定することができるSpritekit/swiftで同様の方法を実装するにはどうすればよいですか? SKActionsでこれを行うことはできますか?

答えて

0

は、私はこのようにそれを実装:

負荷が聞こえる:

let cheep1 = SKAction.playSoundFileNamed("bird1.mp3", waitForCompletion: false) 
//and so on 

は、待ち時間を作成し、永遠にシーケンスを呼び出す:

func beginRandomCheeping(){ 
    let sequence = (SKAction.sequence([ 
     SKAction.waitForDuration(2.0), 
     SKAction.runBlock(self.playRandomSound) 
    ])) 

    let repeatThis = SKAction.repeatActionForever(sequence) 
    runAction(repeatThis) 
} 

ランダム化音をとプレイ:

func playRandomSound() { 
    let number = Int(arc4random_uniform(UInt32(9))) 

    switch (number){ 
    case 1: 
     runAction(cheep1) 
     break 
    case 2: 
     runAction(cheep2) 
     break 
     . 
     . 
     . 
    case 9: 
     runAction(cheep9) 
     break 
    default: 
     break 
    } 
} 

ゲームロジックのどこかでself. beginRandomCheeping()と呼んでください。

0

あなたができることは、サウンドファイルを配列に入れ、オーディオプレーヤーを設定して、ランダムにサウンドを再生する関数を作成することです。次に、任意の時間間隔で関数を呼び出すタイマーを使用します。だから、:SKActionを使用して

Class GameScene { 
    var soundFiles = ["bird_sound1", "bird_sound2"] 
    var audioPlayer: AVAudioPlayer = AVAudioPlayer() 

func setupAudioPlayer(file: NSString, type: NSString){ 
    let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String) 
    let url = NSURL.fileURLWithPath(path!) 
     do { 
      try audioPlayer = AVAudioPlayer(contentsOfURL: url) 
     } 
      catch { 
      print("Player not available") 
     } 
    } 

func playRandomSound() { 
    let range: UInt32 = UInt32(soundFiles.count) 
    let number = Int(arc4random_uniform(range)) 

    self.setupAudioPlayer(soundFiles[number], type: "wav") 

    self.audioPlayer.play() 
} 

override func didMoveToView(view: SKView) { 
    _ = NSTimer.scheduledTimerWithTimeInterval(7, target: self, selector: #selector(GameScene.playRandomSound), userInfo: nil, repeats: true) 

} 
関連する問題