Я создаю бесконечный раннер для iphone в ландшафтном режиме, используя SpriteKit.Я настроил сцену так:
override func viewDidLayoutSubviews() {
let scene = GameScene(size: CGSize(width: 812, height: 375))
let skView = view as! SKView
scene.backgroundColor = UIColor.red
scene.scaleMode = .aspectFill
skView.presentScene(scene)
skView.showsFPS = true
skView.showsNodeCount = true
print("Screen Size: \(GlobalProperties.screenSize.width) x \(GlobalProperties.screenSize.height)")
print("Scene Size: \(scene.size.width) x \(scene.size.height)")
}
Я хотел бы расположить проигрыватель таким образом, чтобы между краем проигрывателя и правым краем экрана было одинаковое количество пикселей независимо от соотношения сторон,Это разумная практика для поддержания трудности между устройствами?У меня есть настройки макета как:
override func didMove(to view: SKView) {
let player = SKSpriteNode(texture: SKTexture(imageNamed: "CuteMelon"))
player.anchorPoint = CGPoint(x: 0.5, y: 0.5)
player.position = CGPoint(x: frame.width - 600, y: frame.midY)
self.addChild(player)
let rect = SKSpriteNode(color: .orange, size: CGSize(width: 550, height: 200))
rect.anchorPoint = CGPoint(x: 1, y: 0.5)
rect.position = CGPoint(x: frame.width-50, y: frame.height/2)
self.addChild(rect)
}
Я добавил прямоугольник, чтобы увидеть, если в обоих случаях игрок был 600 пикселей справа (оставляя зазор 50px, чтобы убедиться, что он не сходит с края)
Результат выглядит следующим образом:
iPhone XR: https://imgur.com/y6OYHkK, который работает как положено
iPhone 8: https://imgur.com/nkrx5By, который не размещаетсяпрямоугольник в 50 пикселях от правой границы рамки.
Что мне нужно сделать, чтобы решить эту проблему, или я должен решить ее полностью иначе?Спасибо