2016-04-07 10 views
0

Ich versuche, mein erstes Spiel mit SpriteKit & Swift machen. Ich denke, ich habe das Konzept von World SKNode verstanden, aber ich kann es nicht richtig funktionieren lassen.SpriteKit Welt falsche Positionierung

Ich füge world:SKNode als Kind dem GameScene hinzu. Dann füge ich 9 untergeordnete SKSpriteNodes hinzu (400px X 400px ab 200px X 200px Punkt, da spritesNodes zentriert sind). Und sie positionieren sich perfekt, ABER ich kann mir nicht vorstellen, wie ich meine Welt SKNode erreichen kann.

Zum Beispiel, wie kann ich linke Ecke meiner Welt zeigen?

import SpriteKit 

class GameScene: SKScene { 
    let cityPartSide:Int = 400 
    let startCoord:Int = 200 

    var world:SKNode = SKNode() 

    override func didMoveToView(view: SKView) { 

     //self.world = SKNode() 
     self.world.name = "world" 
     self.addChild(self.world) 
     let map:[[UInt8]] = [[16, 16, 16], 
          [16, 16, 16], 
          [16, 16, 16]] 
     drawMap(world, map: map) 

    } 
    func drawMap(world:SKNode, map:[[UInt8]]) { 
     let lineSize:Int = map[0].count 
     var lineCounter = map.count 
     while lineCounter > 0 { 
      lineCounter -= 1 
      var elemCounter = 0 
      while elemCounter < lineSize { 
       var sprite:SKSpriteNode = SKSpriteNode() 
       let currentPartNumb = map[lineCounter][elemCounter] 
       if currentPartNumb == 0 { 
        elemCounter += 1 
        continue 
       } else { 
        sprite = SKSpriteNode(imageNamed: "cell") 
       } 
       //CHOOSE IMAGE 
       sprite.position = CGPoint(x: startCoord + elemCounter * cityPartSide, y: startCoord + ((lineSize-1)-lineCounter)*cityPartSide) 
       world.addChild(sprite) 
       elemCounter += 1 
      } 
     } 
    } 
    override func update(currentTime: CFTimeInterval) { 
     /* Called before each frame is rendered */ 
    } 
} 

Aber ich bekommen, was durch diesen Code ausgeführt wird, ist, dass vertikal es perfekt positioniert ist, sondern linke Seite der Welt ist irgendwo aus dem Bildschirm.

enter image description here

+0

mir Sieht hinzuzufügen, wie Sie nicht die scalingFactors richtig Handhabung, wie schaffen Sie die Szene selbst? Welchen ScaleMode verwendest du? – Knight0fDragon

Antwort

0

Oh, das war ganz einfach. Ich brauchte diese

scene.size = self.view.frame.size 

in GameViewController.swift der viewDidLoad wie diese

class GameViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if let scene = GameScene(fileNamed:"GameScene") { 
      // Configure the view. 
      let skView = self.view as! SKView 
      skView.showsFPS = true 
      skView.showsNodeCount = true 

      /* Sprite Kit applies additional optimizations to improve rendering performance */ 
      skView.ignoresSiblingOrder = true 

      /* Set the scale mode to scale to fit the window */ 
      scene.scaleMode = .AspectFill 
      scene.size = self.view.frame.size //<---HERE 
      skView.presentScene(scene) 
     } 
    } 

    //...etc.