2016-03-28 41 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