ich ein SKAction
waitForDuration
verwenden, um eine sprite
alle 5 Sekunden, um zu laichenSwift 2: Zugriff auf die meisten neu gelaicht Sprite Position
self.addChild(enemy)
Wie kann ich die letzten gelaicht Sprites Position zugreifen?
ich ein SKAction
waitForDuration
verwenden, um eine sprite
alle 5 Sekunden, um zu laichenSwift 2: Zugriff auf die meisten neu gelaicht Sprite Position
self.addChild(enemy)
Wie kann ich die letzten gelaicht Sprites Position zugreifen?
Speichern Sie die Sprite jedes Mal, wenn Sie laichen ein:
Irgendwo in Ihrer Initialisierung:
var lastSprite = SKSpriteNode()
Dann in Ihrem Feind laich Code:
addChild(enemy)
lastSprite = enemy
Sie könnten haben überarbeite deine SKAction, um einen Block mit den 2 Anweisungen statt nur einem addChild auszuführen. Alternativ können Sie enumerateChildNodesWithName untersuchen, um zu sehen, ob der zuletzt hinzugefügte Sprite immer der letzte oder der erste gesendete Sprite ist.
Sie könnten auch self.children.last
nutzen und es als SKSpriteNode
werfen das letzte Element zum Array hinzugefügt bekommen (der Kinder)
ich Antwort Steve Ives verwenden würde, aber wenn der Name des Sprites werde nicht sein In meinem Spiel würde ich eine Integer-Variable anstelle eines neuen SKSpriteNode deklarieren, so dass es nicht so viel Speicher verbrauchen würde. Man könnte so etwas wie folgt verwenden:
// Declare your integer when you initialise
var lastNode = NSInteger()
// You'd add your spritenode somewhere later in your code
lastSprite = SKSpriteNode(imageNamed: "something")
lastNode += 1
lastSprite.name = "myName \(lastNode)"
self.addChild(lastSprite)
Dann, wenn Sie das letzte Sprite zugreifen möchten, dann würden Sie verwenden:
grabMeSprite = self.childNodeWithName("myName \(lastNode)") as! SKSpriteNode
Ich glaube nicht, dass lastSprite = der Feind mehr Speicher verbraucht, da er keine Kopie des Sprite-Objekts erstellt, sondern nur einen neuen Zeiger auf das vorhandene Sprite-Objekt. –
überprüfte ich die Dokumentation für Kinder in SKNode und ich denke, es ist nur ein Array der untergeordneten Knoten des Knotens - wissen Sie, ob .last garantiert der letzte hinzugefügte Knoten ist? –
Yeah 'last' wird das letzte dem Array hinzugefügte Element erhalten. Nach [Apple Dokumentation] (https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/index.html#//apple_ref/occ/instm/SKNode/addChild :) 'addChild': Fügt einen Knoten zum ** Ende der Empfängerliste des Empfängers ** hinzu. Ich hoffe es hilft. –