Использование SKCameraNode для универсального приложения SWIFT

Я разрабатываю универсальную игру, используя редактор уровня Sprite Kit на Xcode 8 beta 4.

Моя сцена в редакторе уровня 750×3334. В моей сцене у меня фоновое изображение, фоновое изображение настроено на размер сцены.

Мне нужна камера внутри моей сцены.

Я установил SKCameraNode со шкалой (1,1), положение камеры – это центр моей сцены.

камера

Чтобы создать сцену:

if let scene = GKScene(fileNamed: "GameScene") { if let sceneNode = scene.rootNode as! GameScene? { // Copy gameplay related content over to the scene sceneNode.entities = scene.entities sceneNode.graphs = scene.graphs sceneNode.scaleMode = .aspectFill if let view = self.view as! SKView? { view.presentScene(sceneNode) view.ignoresSiblingOrder = true view.showsFPS = true view.showsNodeCount = true } } } 

Когда игра запущена, моя камера должна быть установлена ​​так, чтобы верхняя часть фона была равна верхнему краю устройства.

Для этого:

 override func sceneDidLoad() { camera?.position.y = -UIScreen.main.nativeBounds.size.height/2 } 

Для iPhone 6 он отлично работает. Для iPhone 5, 6+ у меня есть пустая область (вне сцены) на верхнем краю.

объяснять

Так что, может быть, моя логика ошибочна …

Вы не должны касаться размера экрана, вам нужно работать с размером сцены. .AspectFill сохраняет одинаковый размер сцены, независимо от устройства, единственный масштабный режим, который изменяет размер сцены .ResizeFill

Чтобы получить камеру в центре, вам нужно сделать

 camera.position = CGPointMake(scene.frame.size.width / 2, scene.frame.size.height / 2) 

Заметьте, сцена может быть сама, я не знаю, где вы будете использовать этот код

Вы можете получить размер пользовательского устройства, как это

if(UIScreen.mainScreen().bounds.width == 375 && UIScreen.mainScreen().bounds.height == 667) .

Это для iPhone 6 вы можете использовать размеры Google, а затем вы настраиваете положение руководства камеры.

  • Разница между layoutSubviews () и viewWillLayoutSubviews ()
  • Не оставляйте SKNode от просмотра
  • Как изменить значок кнопки «Бар» при нажатии в Swift?
  • Массив, не считающий объекты в Swift
  • Добавление Stackview в UIScrollView
  • Почему я не могу получить доступ к элементу экземпляра класса в Swift
  • Работает на симуляторе, но «фатальная ошибка: неожиданно найденная ноль ...» на устройстве
  • как правильно выразить этот оператор rangeOfCharacter, используя swift 3?
  • Определите, были ли локальные уведомления явно запрещены
  • Почему есть белый край при обрезке изображения с помощью UIGraphicsContext?
  • SWIFT: var someVariable: int = textfield.text.toInt () x textfield2.text.toInt () и принудительное развертывание
  • Давайте будем гением компьютера.