2016-03-28 10 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ゲームを作成するときは、NSTimersの代わりにSKAction.waitfordurationを使用する方がよいでしょう。シーンのトランジションでNSTimersが正しくキャンセルされず、シーンを一時停止しても一時停止しません。 – crashoverride777

答えて

2

名このようなあなたのスプライト:...あなたのコメントに基づいて

あなたの名前を:

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

    //do your stuff here 
} 

EDIT:

enemy1.name = "enemy1" 

は、このように、名前でノードを列挙しますあなたのノードはあなたが作成した場所の右にあります。シーンに追加する直前。ノードを列挙する場所は、達成したいものによって異なります。あなたがタッチでそれらの速度を変更したい場合は、それをtouchesBeganの中で行います。フレームごとに同じタスクを実行する場合は、更新メソッドで行います。

+0

どこに:enemy1.name = "enemy1"を追加しますか?私は更新funcで列挙を追加するのですか? – Gjeruldsen

関連する問題