首页 > 解决方案 > SKTileMapNode 未加载到正确的大小

问题描述

对于我目前正在进行的一个项目,我有两个 SKTileMapNodes 堆叠在一起。它们在行数、列数以及图块大小上有所不同。但是,它应该相等,以便它们具有相同的整体宽度和高度。

问题是尽管行、列和图块大小正确,但其中一个图块图的大小不正确。

第一个 SKTilMapNode(正确大小)

class Map:SKTileMapNode {

  func initMap() {

    name = "Map"

    tileSet = SKTileSet(named: "tileSet")!
    numberOfColumns = 32
    numberOfRows = 32
    tileSize = CGSize(width: 32, height: 32)
    position = CGPoint(x: 0, y: 0)
    anchorPoint = CGPoint(x: 0.5, y: 0.5)

    self.fill(with: self.tileSet.tileGroups[4])

  }

}

第二个 SKTileMapNode(大小不正确)

class PaintLayer:SKTileMapNode {

    func initPaintLayer() {

        name = "PaintLayer"

        tileSet = SKTileSet(named: "tileSet")!
        numberOfColumns = 32*4
        numberOfRows = 32*4
        tileSize = CGSize(width: 32/4, height: 32/4)
        position = CGPoint(x: 0, y: 0)
        anchorPoint = CGPoint(x: 0.5, y: 0.5)

        self.fill(with: self.tileSet.tileGroups[1])

    }

}

在游戏场景中初始化

class GameScene: SKScene {

  var map:Map = Map()
  var paintLayer:PaintLayer = PaintLayer()
  var player:Player = Player(imageNamed: "player")

  override func didMove(to view: SKView) {

      let camera:SKCameraNode = SKCameraNode()
      self.camera = camera
      self.addChild(camera)

      map.initMap()
      self.addChild(map)

      paintLayer.initPaintLayer()
      self.addChild(paintLayer)

      player.initPlayer()
      self.addChild(player)

  }

}

结果

结果

标签: swiftsprite-kitsktilemapnode

解决方案


推荐阅读