Я пытаюсь создать бесконечную игру-скроллер и пытаюсь создать два фона.
У меня есть класс фона, как
class BackgroundMG1: SKNode {
let background: SKSpriteNode
let size: CGSize
init(size: CGSize) {
self.size = size
let hue = CGFloat((arc4random() % 1000) / 1000)
let randomColor = UIColor(hue: hue, saturation: 1, brightness: 1, alpha: 1)
self.background = SKSpriteNode(color: randomColor, size: size)
super.init()
setup()
}
func setup() {
background.position.x = 0
background.position.y = 0
addChild(background)
}
}
Я собираюсь заполнить свой фон другими объектами, поэтому мне нужно, чтобы он был классом, а не просто статичным изображением.
У меня моя игровая сцена, вот так,
class AntarcticaMiniGame1: SKScene {
var player: SKSpriteNode!
var backgrounds: [BackgroundMG1]!
override func didMove(to view: SKView) {
setup()
}
func setup(){
// Initializers
player = Player()
// Positions
player.position.x = 0
player.position.y = 0
player.zPosition = 1
// Set up backgrounds
backgrounds = [BackgroundMG1]()
for i in 0..<2 {
let background = BackgroundMG1(size: size)
background.position.x = CGFloat(i) * size.width
background.position.y = 0
backgrounds.append(background)
addChild(background)
}
// Add to scene
addChild(player)
}
override func update(_ currentTime: TimeInterval) {
player.physicsBody!.applyForce(CGVector(dx: 25, dy:0))
}
}
Вы также можете предположить, что у меня настроены земля и объект камеры. Мне пришлось опустить этот код, потому что он не имеет отношения к этому вопросу. Игрок остается на земле, а камера следует за игроком.
Прямо сейчас, когда я загружаю игру, объект игрока перемещается вправо, как и ожидалось. Я вижу один фон, но второй не появляется.
Я чувствую, что делаю некоторые ошибки с позиционированием. Я не на 100% знаю, как работает система координат в Swift.
Редактировать: Моя сцена связана с файлом .sks, который сейчас полностью пуст. Игра в альбомной ориентации.