2016-04-07 21 views
0

私はSpriteKit & Swiftを使って私の最初のゲームを作ろうとしています。私はWorld SKNodeのコンセプトを理解していると思いますが、正しく動作させることはできません。SpriteKitワールド間違った位置付け

私はGameSceneに子としてworld:SKNodeを追加します。次に、9つの子SK SKriteNodes(400px X 400pxを200px X 200pxのポイントから開始します。これは、spritesNodesが中央に配置されるためです)。そして、彼らは完全にポジションを取っていますが、私は自分の世界の境界をどのように取得するのか分かりません。

たとえば、自分の世界の左下をどのように表示できますか?

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

しかし、このコードを実行すると、垂直方向には完全に配置されますが、世界の左側は画面外になります。

enter image description here

+0

ようGameViewController.swiftさんのviewDidLoadでこの

scene.size = self.view.frame.size 

を追加する必要が?どのscaleModeを使用していますか? – Knight0fDragon

答えて

0

ああ、それは非常に簡単でした。私はあなたがどのようにシーン自体を作成している、正しくscalingFactorsを処理していないように私には見えるこの

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. 
関連する問題