2016-07-29 12 views
1

Ich führe eine for-Schleife in meinem Spiel, die SKSpriteNodes erzeugen würde.Ändern der x-Position von SKSpriteNode

Ich möchte, dass mein erster Block bei (20, 40) beginnt und für jeden neuen Block 20 zur x-Position und 40 zur y-Position addiert.

erster Block (20, 40) zweiter Block (40, 80) dritter Block (60, 120) Und so weiter.

Die y-Position verhält sich so, wie ich möchte, aber die x-Position würde zufällig irgendwo auf meinem Bildschirm beginnen und dann 20 für jeden neu erzeugten Block hinzufügen.

Unten ist mein Code.

Ich fügte auch die print-Anweisung, wie es aussehen würde, wenn ich den Code ausführen.

Unten ist die Druckanweisung der X- und Y-Positionen der Blöcke.

Ich versuchte, die Reihenfolge der xP und yP Initialisierung zu wechseln. Das hat nicht funktioniert.

Irgendwelche Vorschläge?

+1

Können Sie nach wo definierst du xP und yP? Das erste, was du ihnen antust, ist ihre Werte zu erhöhen, aber wir können nicht sehen, was sie anfangen. – claassenApps

Antwort

0

würde ich while loops für diese Art von Operationen verwenden möchten, wo Sie eine Bedingung von Anfang verhängen müssen, zum Beispiel Grenzen:

class GameScene: SKScene { 
    let deltaX:CGFloat = 20.0 
    let deltaY:CGFloat = 40.0 
    override func didMoveToView(view: SKView) { 
     let widthLimit = self.frame.width-40 
     let heightLimit = self.frame.height-140 
     let startX:CGFloat = 80.0 
     drawStair(startX,limits:CGSizeMake(widthLimit,heightLimit)) 
    } 
    func drawStair(startFromX:CGFloat,limits:CGSize) { 
     var currentX:CGFloat = startFromX 
     var currentY:CGFloat = startFromX+deltaY 
     while currentX<limits.width && currentY<limits.height { 
      drawBlock(CGPointMake(currentX,currentY)) 
      currentX += deltaX 
      currentY += deltaY 
     } 
    } 
    func drawBlock(position: CGPoint,size:CGSize = CGSizeMake(40,40)) { 
     let block = SKSpriteNode(color: UIColor.redColor(), size: size) 
     block.position = position 
     block.name = "block" 
     addChild(block) 
    } 
} 

Ausgang:

enter image description here

+0

Dies ist eine großartige Lösung, aber der Grund, warum ich eine for-Schleife verwendet habe, ist, dass ich eine switch-Anweisung innerhalb der Schleife erstellen kann, zwischen der ich die x-Position um 20 Pixel addieren und subtrahieren kann. Ich bin mir nicht sicher, ob ich das mit einer While-Schleife machen kann und um ehrlich zu sein, verstehe ich das nicht so gut. Aber ich werde das als die richtige Antwort akzeptieren, weil es meine erste Frage beantwortet. Vielen Dank! –

+0

Macht nichts, ich kann tun, was ich machen will. Vielen Dank für Ihre Antwort! –

+0

Ich habe während, weil konzeptionell Sie nicht zeichnen n Elemente, möchten Sie Elemente mit Grenzen zu zeichnen, so begrenzt die Kontrolle dieser Schleife von der Startposition –