2017-05-26 25 views
-1

Dies erstellt einen Ball-Knoten mit Z-Position 2. Aber während ich das Spiel, möchte ich einen anderen Ball erstellen, der eine Position bei 1 hat. Wie kann ich das tun, oder habe ich eine ganz neue Funktion zu machen, die einen Ballknoten mit z-Position 1 macht?So ändern Sie Knotenwert

+0

Geht es nicht nur darum, SKSpriteNode abzuleiten? –

+0

Was ist "Selbst" hier? –

+0

Ich bevorzuge es nicht, eine Unterklasse zu erstellen - und self ist die Klasse GameScene - auch ich habe gerade entschieden, ein int innerhalb der Klasse hinzuzufügen, und fügte etwas hinzu wie 'if counter == 2 {saw.zPosition = 1} else {saw.zPosition = 2} ' –

Antwort

-1

Ich würde vorschlagen, ein Argument zu verwenden, wie:

func createBall(z: Int) { 
    ballS = SKNode() 
    let ball = SKSpriteNode(imageNamed: "Ball") 

    saw.zPosition = z 
    ballS.addChild(ball) 
    self.addChild(ballS) 

}

Und verwenden Sie es als:

createBall(z: 2) 
+0

Nicht sicher, warum ich downvoted wurde, ist jede Rückmeldung willkommen. – sabi

+0

Ich habe Sie updated, aber es wird nicht angezeigt, weil ich einen schlechten Ruf habe. Vielen Dank! –

0

Wenn jeder ball Sprite ein Kind das sein muss ballS Knoten, dann könnten Sie Folgendes tun.

definieren Kugeln als Eigenschaft (dh nach der class Definition, sondern vor allen Funktionen)

let balls = SKNode() 

in didMove(to:), fügen Sie den ballS Knoten:

addChild(ballS) 

erstellen addBall Funktion: (don‘ t rufen Sie es createBall, es sei denn, alles schafft den Ball)

func addBall(withZPosition zPos: Int) { 
    let newBall = SKSpriteNode(imageNamed: "Ball") 
    newBall.zPosition = zPos 
    ballS.addChild(newBall) 
    } 

Dann addBall(withZPosition:) rufen Sie einfach einen neuen Ball zu erstellen und hinzuzufügen:

addBall(withZPosition: 2) 

Wenn Sie mehr Kontrolle über den Ball wollen, die erstellt wird (z wünschen, bevor es in die Szene einige seiner Eigenschaften zu verändern Hinzufügen) können Sie eine createBall Funktion machen, die einen neuen Ball schafft und gibt den neuen Knoten:

func createBall(withZPosition zPos: Int) -> SKSpriteNode { 
    let newBall = SKSpriteNode(imageNamed: "Ball") 
    newBall.zPosition = zPos 
    return newBall 
    } 

und diese wie folgt verwenden:

let newBall = createBall(withZPosition: 2) 
newBall.size = CGSize(x: 50, y:50) 
ballS,addchild(newBall) 
0

U kann eine globale Variable haben, so dass, wann immer Sie es u gesetzt ändern möchten und erstellen Sie den Ball

so erstellen Sie eine Variable

var myZposition = 2 

und einen Ball zu Beginn in didmove durch Aufrufen createBall()

func createBall(){ 
    ballS = SKNode() 
    let ball = SKSpriteNode(imageNamed: "Ball") 

    saw.zPosition = myZPosition 
    ballS.addChild(ball) 
    self.addChild(ballS) 
} 

dann, nachdem diese zu sehen, wenn Sie die zPosition es gerade eingestellt am Ende didmove ändern möchten anzuzeigen

myZposition = 1 

dann, wenn u Kugeln schaffen hier Ihre zPosition wäre 1. Dies wäre eine einfache Einrichtung sein, wenn Sie viele Bälle und eine Änderung in zPosition implementieren für einen bestimmten Bereich des Spiels Hoffnung erreichte das half

+0

Danke! Ich habe Sie aufgestockt, aber ich habe nicht genug Ruf dafür. Es tut uns leid! –

+0

Es ist in Ordnung, froh, dass ich geholfen habe. –