我正在使用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个节点,但是图块只是不显示。
感谢您的帮助,我为此感到很努力。
我也遇到过类似的麻烦,游乐场和tilemap似乎有冲突将您的代码放入xcode项目中,看看它是否有效