2016-03-28 40 views
1

我用NSTimer每4秒產生一個新的精靈。這是精靈代碼:Swift 2:給所有精靈產生速度變化的方法

enemy1 = SKSpriteNode(texture: enemyTexture) 
    enemy1.position = CGPoint(x: CGRectGetMidX(self.frame) - 300, y: CGRectGetMidY(self.frame) - 300) 
    enemy1.physicsBody = SKPhysicsBody(texture: enemyTexture, size: enemyTexture.size()) 
    enemy1.physicsBody!.affectedByGravity = false 
    enemy1.physicsBody!.allowsRotation = false 
    enemy1.setScale(0.4) 
    self.addChild(enemy1) 

我正在尋找一種方法來把所有的enemy1精靈這樣的速度,每當我想:

enemy1.physicsBody!.velocity = CGVectorMake(70, 0) 

我想要的速度保持不變,直到我決定改變它,我通過在更新函數中添加代碼來做到這一點。

所以我的問題是我如何給所有產卵的精靈一個恆定的速度?

+2

旋風的答案是你在找什麼。作爲提示,在製作SpriteKit遊戲時最好使用SKAction.waitforduration而不是NSTimers。 NSTimers在場景轉換時沒有正確取消,當您暫停場景時不會暫停等。 – crashoverride777

回答

2

名稱你的精靈是這樣的:

按名稱
enemy1.name = "enemy1" 

然後枚舉節點,就像這樣:

self.enumerateChildNodesWithName("enemy1") { node, stop in 

    //do your stuff here 
} 

編輯:根據您的意見

...你的名字你的節點就在你創建它們的地方。在將它們添加到場景之前。你應該在哪裏列舉你的節點取決於你想要達到的目標。如果你想要改變他們的速度,那麼在touchesBegan裏面做。如果你想每幀完成相同的任務,那麼你需要使用更新方法。

+0

我應該在哪裏添加:enemy1.name =「enemy1」?我是否在更新func中添加枚舉? – Gjeruldsen