2015-05-04 2 views
0
var timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("spawnredbarrier"), userInfo: nil, repeats: true) 


} 

    func spawnredbarrier(){ 


     var barrier = SKSpriteNode(imageNamed: "redobstacle.png") 

     barrier.position = CGPointMake(515, 0) 
     let actionn = SKAction.moveToY(self.size.height, duration: 6) 
     barrier.runAction(SKAction.repeatActionForever(actionn)) 

     self.addChild(barrier) 

     var bluebarrier = SKSpriteNode(imageNamed: "blueobstacle.png") 

     bluebarrier.position = CGPointMake(515, 0) 
     let action = SKAction.moveToY(self.size.height, duration: 6) 
     bluebarrier.runAction(SKAction.repeatActionForever(action)) 

     self.addChild(bluebarrier) 

     var greenbarrier = SKSpriteNode(imageNamed: "greenobstacle.png") 

     greenbarrier.position = CGPointMake(515, 0) 
     let actionnn = SKAction.moveToY(self.size.height, duration: 6) 
     greenbarrier.runAction(SKAction.repeatActionForever(actionnn)) 

     self.addChild(greenbarrier) 



    } 

я хочу таймер для spawnbarriers выбрать случайное препятствие и его действия каждые 2 секундВыберите случайное препятствие

как я могу сделать это действие случайного

, а также, как я могу сделать продолжительность 6, чтобы увеличить с определенной скоростью

ответ

2

1-й вопрос: чтобы получить случайное число в Swift, вы можете использовать любой ответ из этого SO question. Я выберу this one для ясности:

Этот метод генерирует случайное значение Int между заданной минимальной и максимальной

func randomInt(min: Int, max:Int) -> Int { 
    return min + Int(arc4random_uniform(UInt32(max - min + 1))) 
} 

После того как вы это, просто создать простой оператор коммутатора:

let r = randomInt(0, 2) 
switch r{ 
case 0: self.addChild(barrier) 
case 1: self.addChild(bluebarrier) 
case 2: self.addChild(greenbarrier) 
default: println("Other") 
} 

Ваша функция будет выглядеть следующим образом:

func spawnredbarrier(){ 
     var barrier = SKSpriteNode(imageNamed: "redobstacle.png") 

     barrier.position = CGPointMake(515, 0) 
     let actionn = SKAction.moveToY(self.size.height, duration: 6) 
     barrier.runAction(SKAction.repeatActionForever(actionn)) 

     var bluebarrier = SKSpriteNode(imageNamed: "blueobstacle.png") 

     bluebarrier.position = CGPointMake(515, 0) 
     let action = SKAction.moveToY(self.size.height, duration: 6) 
     bluebarrier.runAction(SKAction.repeatActionForever(action)) 

     var greenbarrier = SKSpriteNode(imageNamed: "greenobstacle.png") 

     greenbarrier.position = CGPointMake(515, 0) 
     let actionnn = SKAction.moveToY(self.size.height, duration: 6) 
     greenbarrier.runAction(SKAction.repeatActionForever(actionnn)) 

     let r = randomInt(0, 2) 
     switch r{ 
     case 0: self.addChild(barrier) 
     case 1: self.addChild(bluebarrier) 
     case 2: self.addChild(greenbarrier) 
     default: println("Other") 
     } 
} 

2-й вопрос: вам нужен таймер (вы уже знаете, как его запустить, просто создайте другое), а в целевом методе просто увеличьте один iVar, удерживающий значение скорости. Используйте это Ивар вместо жёстко 6

обновления:

Определить переменный экземпляр на уровне класса, то функция для регулировки значения вашего Ивара (вы должны проверить, что происходит, когда п достигнут 0) , Добавьте таймер, вызывающий эту функцию, и используйте n вместо жесткого кодирования. 6

var n: Int = 6 

function adjustIVar() { 
    self.n-- 
} 
+0

Как вы можете использовать ивар, пожалуйста, я могу это сделать? –

+0

Я хочу, чтобы значение 6 упало –

+0

Обновленный ответ! –

Смежные вопросы