Я создаю эту простую платформерную игру, используя SpriteKit в Swift Playgrounds в качестве небольшого проекта.
Однако, когда я создал SKTileSet, TileMap и т. Д. c. и побежал на игровую площадку, ни одна из плиток на самом деле не обнаружилась.
Другие SKSpriteNodes, которые я создал также в том же файле сцены SpriteKit, отображаются отлично.
Код:
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 узла, но плитки просто не появляются.
Спасибо за помощь, я действительно борюсь с этим.