2016-04-20 60 views
-1

我正在創建一個太空射擊遊戲。我創造了一個敵人節點。我想要做的是在屏幕的每個角落有4個節點。換句話說,我想同時產生同一個節點的多個副本。當遊戲加載時,我希望有四個節點,都是一樣的。我怎樣才能做到這一點?同時在屏幕上有兩個相同的節點Swift SpriteKit

謝謝

+1

創建四個節點,就像你創建一個節點。如果你有一個自定義的SpriteKit子類(比如說SKSpriteNode),那麼你可以創建其中的四個,並將它們正常添加到場景中。 – Gliderman

+0

@Gliderman所以我需要創建四個重複節點? –

+0

是的,並且有一個自定義的子類會更容易,這樣你就不會混亂主遊戲代碼。 – Gliderman

回答

0

下面是我用來生成4行空間入侵者的一段代碼。我重複使用相同的SKSpriteNode()可變因爲一旦節點已被添加到場景中,變量不再需要:

for invaderPosition in 100.stride(to: 500, by: 120) { 
     invader = SKSpriteNode(texture: texturesA[0]) 
     invader.position = CGPoint(x: CGFloat(invaderPosition), y: 200) 
     invader.xScale = 8 
     invader.yScale = 6 
     invader.color = SKColor.redColor() 
     invader.colorBlendFactor = 1.0 
     invader.name = "InvaderA" 
     invader.texture = texturesA[1] 
      invader.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(texturesA, timePerFrame: self.timePerMove))) 
     addChild(invader) 
    } 

闖入者被定義爲SKSpriteNode屬性。 texturesA只是一個數組SKTextures; timePerMove只是入侵者應該移動的時間間隔(在Update中)並更改形狀(紋理)。

var invader = SKSpriteNode() 
var texturesA:[SKTexture] = [] 
let timePerMove: CFTimeInterval = 1.0 

所以你可以做類似的事情,除了入侵者的位置是4個角落而不是一排。

0

只需使用copy命令,

let newNode = originalNode.copy() as! SKSpriteNode; 
+0

這是否也會複製與該節點相關的所有代碼? –

+0

的代碼?就應用而言,運行時不存在任何代碼,無論您的對象內部的變量是否會被複制,除少數例外,我相信子節點和物理實體不會被複制,因此您需要擴展這些的複製功能 – Knight0fDragon

相關問題