Проблема масштабирования в overlaySKScene в SceneKit - PullRequest
0 голосов
/ 02 октября 2018

У меня есть следующая сцена в проекте SceneKit с ортопедической фиксированной камерой «Вид сверху».camera.orthographicScale - 540 (= 1080 (scnView.height) / 2).У меня есть scnNodes как таблица и шары.Кроме того, у меня есть overlaySKScene, состоящий из нескольких спрайтовых узлов (элементов таргетинга) на этой сцене.С этим параметром он работает хорошо для всех экранов iPhone.

scnView.frame.size = CGSize(width: 1920, height: 1080)

let camera = SCNCamera()
camera.zFar = 1500
camera.usesOrthographicProjection = true
camera.orthographicScale = 540

let plane = SCNPlane(width: 1920, height: 1080)
plane.firstMaterial?.diffuse.contents = "Table" //as image
tableBackGround = SCNNode(geometry: plane)
tableBackGround.position.z = -0.1
self.rootNode.addChildNode(plane)

К сожалению, когда я открываю приложение на iPad Air 2 (разрешение экрана: 2048 x 1536), scnNode «Table» выглядит увеличенным и всеУзлы спрайтов в overlaySKScene выглядят не масштабированными и не по координатам.

Вот что я пробовал, это:

Я настроил camera.orthographicScale с 540 до 768 (1536 (высота) / 2), он уменьшился, и я начал видеть все углы стола в сцене.Но все же узлы overlaySKScene изменчивы.Но узлы SceneKit в порядке, и все они в точных координатах.

Кроме того, я настроил режим масштабирования overlaySKScene следующим образом:

overlayScene.scaleMode = SKSceneScaleMode.aspectFit // i have tried all other SKSceneScaleMode options, aspectFit was the best.

overlaySKScene узлы спрайтов становятся хорошими, но все же онине в правильных координатах (у него есть битовое смещение).Когда я нацеливаюсь на шары scnNode, «цели узла спрайта» не в правильном положении.

Как я могу исправить эту проблему?Я думаю, что мне нужно установить корреляцию между «масштабированием overlaySKScene» и «camera.orthographicScale» или мне нужно настроить формулы для координации ориентации?Спасибо за вашу поддержку ...

...