2016-07-26 95 views
1

我是Swift的初学者,我需要你的提示和帮助。 我有SKTextureNode纹理,我有5个坐标(位置)。随机产生节点

我想了解如何在Swift中随机生成一个SKSpriteNode间隔的时间间隔。

例如:

let coordinate1 = CGPoint (x: my coordinates, y: my coordinates) let coordinate2 = .....

我想在这些点,产生了我的质地,但我不知道我能做到这一点。我知道如何为我的节点添加操作。我希望他们能够产卵和产卵后坠落

回答

1
class GameScene: SKScene { 
    var positions: [CGPoint]! = [CGPoint]() 
    var myHero: SKSpriteNode! 
    override func didMoveToView(view: SKView) { 
     let pos1 = CGPointMake(50,400) 
     positions.append(pos1) 
     let pos2 = CGPointMake(100,400) 
     positions.append(pos2) 
     let pos3 = CGPointMake(200,400) 
     positions.append(pos3) 
     let pos4 = CGPointMake(300,400) 
     positions.append(pos4) 
     let pos5 = CGPointMake(400,400) 
     positions.append(pos5) 
     //... or : positions = [pos1,pos2,pos3...] 
     self.myHero = SKSpriteNode.init(color: SKColor.blueColor(), size: CGSizeMake(50,50)) 
     self.myHero.alpha = 0.0 
     addChild(self.myHero) 
     spawn(15) 
    } 
    func spawn(count:Int) { 
     let generateRandom = SKAction.runBlock({ 
      let randomPosNum = randomNumber(0...self.positions.count-1) 
      let randomTime = randomDouble(1.0, max: 3.0) 
      print("randomPos: \(randomPosNum) exit in randomTime:\(randomTime) ") 
      self.myHero.position = self.positions[randomPosNum] 
      self.runAction(SKAction.waitForDuration(randomTime)) 
     }) 
     let fadeIn = SKAction.fadeInWithDuration(0.5) 
     let fadeOut = SKAction.fadeOutWithDuration(0.0) 
     let fall = SKAction.moveToY(-30, duration: 0.5) 
     self.myHero.runAction(SKAction.repeatAction(SKAction.sequence([generateRandom,fadeIn,fall,fadeOut]), count: count)) 
    } 
} 
func randomNumber(range: Range<Int> = 1...6) -> Int { 
    let min = range.startIndex 
    let max = range.endIndex 
    return Int(arc4random_uniform(UInt32(max - min))) + min 
} 
func randomDouble(min: Double, max: Double) -> Double { 
    return (Double(arc4random())/Double(UINT32_MAX)) * (max - min) + min 
} 

输出

enter image description here

+1

非常感谢您! –