2016-02-11 106 views
0

寻找一种方法,每隔30秒在屏幕中心产生一个新的精灵。它必须受到重力的影响。斯威夫特2:每30秒产生一个新的精灵

我设法产生了精灵,但是当试图设置affectedByGravity为true时,游戏崩溃。

“致命错误:意外发现零而展开的可选值”

这是我得到的代码:

self.timer = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: "spawningCars", userInfo: nil, repeats: true) 

func spawningCars() { 

    let enemyTowardsTexture = SKTexture(imageNamed: "player") 
    let enemyTowards = SKSpriteNode(texture: enemyTowardsTexture) 
    enemyTowards.position = ourCamera.position 
    enemyTowards.physicsBody!.affectedByGravity = true 
    self.addChild(enemyTowards) 

    print("spawning car right") 
    timer.invalidate() 
    resetTimer() 

} 


    func resetTimer() { 

     self.timer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: "spawningCars", userInfo: nil, repeats: true) 
    } 

回答

2

你需要调用它之前创建的精灵物理学体:

enemyTowards.physicsBody = SKPhysicsBody(texture: enemyTowardsTexture, size: enemyTowardsTexture.size())