SKTileMap不显示任何图块

问题描述 投票:0回答:1

我正在使用Swift Playgrounds中的SpriteKit作为一个小项目来创建这个简单的平台游戏。

但是,当我创建SKTileSet,TileMap等并运行操场时,实际上没有任何图块出现。

我也在同一个SpriteKit场景文件中创建的其他SKSpriteNodes完美显示。

代码:

GameScene.swift

class GameScene: SKScene {

    var worldLayer: Layer!
    var backgroundLayer: RepeatingLayer!
    var mapNode: SKNode!
    var tileMap: SKTileMapNode!

    var lastTime: TimeInterval = 0
    var dt: TimeInterval = 0

    override func didMove(to view: SKView) {
        createLayers()
    }

    func createLayers() {
        worldLayer = Layer()
        worldLayer.zPosition = 2
        addChild(worldLayer)
        worldLayer.layerVelocity = CGPoint(x: -200.0, y: 0.0)

        backgroundLayer = RepeatingLayer()
        backgroundLayer.zPosition = 0
        addChild(backgroundLayer)

        for i in 0...1 {
            let backgroundImage = SKSpriteNode(imageNamed: "Background")
            backgroundImage.name = String(i)
            backgroundImage.scale(to: frame.size, width: false, multiplier: 1.0)
            backgroundImage.anchorPoint = CGPoint.zero
            backgroundImage.position = CGPoint(x: 0.0 + CGFloat(i) * backgroundImage.size.width, y: 0.0)
            backgroundLayer.addChild(backgroundImage)
        }

        backgroundLayer.layerVelocity = CGPoint(x: -100.0, y: 0.0)

        load(level: "Level_0-1")
    }

    func load(level: String) {
        if let levelNode = SKNode.unarchiveFromFile(file: level) {
            mapNode = levelNode
            worldLayer.addChild(mapNode)
            loadTileMap()
        }
    }

    func loadTileMap() {
        if let groundTiles = mapNode.childNode(withName: "GroundNode") as? SKTileMapNode {
            tileMap = groundTiles
            tileMap.scale(to: frame.size, width: false, multiplier: 1.0) 
            PhysicsHelper.addPhysicsBody(to: tileMap, and: "ground")
            for child in groundTiles.children {
                if let sprite = child as? SKSpriteNode, sprite.name != nil {
                    ObjectHelper.handleChild(sprite: sprite, with: sprite.name!)
                }
            }

        }
    }
}

我该如何解决此问题?

与我使用Swift Playgrounds而不是将其作为项目有关吗?

我已经确认没有拼写错误,并且所有拼写错误都可以运行,即实际上在背景中以图块作为节点,但是都没有显示。

我的意思是,删除磁贴后,屏幕将仅包含31个节点。

但是当我添加TileMap和图块时,屏幕将包含162个节点,但是图块只是不显示。

感谢您的帮助,我为此感到很努力。

swift xcode sprite-kit swift-playground tile
1个回答
0
投票

我也遇到过类似的麻烦,游乐场和tilemap似乎有冲突将您的代码放入xcode项目中,看看它是否有效

© www.soinside.com 2019 - 2024. All rights reserved.