2016-04-07 20 views
0

İlk oyunumu SpriteKit & Swift kullanarak yapmaya çalışıyorum. Sanırım Dünya SKNode konseptini anladım, ancak düzgün çalışmasını sağlayamıyorum.SpriteKit dünya yanlış konumlandırma

world:SKNode numaralı telefonu GameScene'e ekliyorum. Sonra 9 çocuk SKSpriteNodes (sppitesNodes ortalanır çünkü 200px X 200px noktasından başlayarak 400px X 400px) ekleyin. Ve mükemmel pozisyondalar, ama dünya SKNode'umun sınırlarını nasıl alacağımı anlayamıyorum.

Örneğin, dünyamın sol alt köşesini nasıl gösterebilirim?

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 */ 
    } 
} 

Ama ne ben bu kodu çalıştırarak elde dikey mükemmel konumlandırılmış, ama dünyanın sol tarafı ekranın dışına bir yere olmasıdır.

enter image description here

+0

gibi GameViewController.swift en viewDidLoad sen nasıl sahne kendisi yaratıyor doğru scalingFactors işlememesi gibi geldi bu

scene.size = self.view.frame.size 

eklemek için gerekli? Hangi scaleMode kullanıyorsunuz? – Knight0fDragon

cevap

0

Oh, bu oldukça kolaydı. Bu

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.