我正在創建一個太空射擊遊戲。我創造了一個敵人節點。我想要做的是在屏幕的每個角落有4個節點。換句話說,我想同時產生同一個節點的多個副本。當遊戲加載時,我希望有四個節點,都是一樣的。我怎樣才能做到這一點?同時在屏幕上有兩個相同的節點Swift SpriteKit
謝謝
我正在創建一個太空射擊遊戲。我創造了一個敵人節點。我想要做的是在屏幕的每個角落有4個節點。換句話說,我想同時產生同一個節點的多個副本。當遊戲加載時,我希望有四個節點,都是一樣的。我怎樣才能做到這一點?同時在屏幕上有兩個相同的節點Swift SpriteKit
謝謝
下面是我用來生成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個角落而不是一排。
只需使用copy命令,
let newNode = originalNode.copy() as! SKSpriteNode;
這是否也會複製與該節點相關的所有代碼? –
的代碼?就應用而言,運行時不存在任何代碼,無論您的對象內部的變量是否會被複制,除少數例外,我相信子節點和物理實體不會被複制,因此您需要擴展這些的複製功能 – Knight0fDragon
創建四個節點,就像你創建一個節點。如果你有一個自定義的SpriteKit子類(比如說SKSpriteNode),那麼你可以創建其中的四個,並將它們正常添加到場景中。 – Gliderman
@Gliderman所以我需要創建四個重複節點? –
是的,並且有一個自定義的子類會更容易,這樣你就不會混亂主遊戲代碼。 – Gliderman