SceneKit 相机没有移动到正确的位置

Posted

技术标签:

【中文标题】SceneKit 相机没有移动到正确的位置【英文标题】:SceneKit camera not moving to proper location 【发布时间】:2018-03-29 04:49:40 【问题描述】:

我正在开发一个太阳系快速操场。如果单击该行星,我希望相机放大该行星。我目前遇到的问题是相机无法放大到正确的位置。这是我正在使用的代码。

public let camera = SCNNode()
camera.camera = SCNCamera()
camera.position = SCNVector3(x: 0, y: -70, z: 50)
camera.eulerAngles = SCNVector3(x: 0.74533, y: 0, z: 0)

let location = planetNodes[i].convertPosition(planetNodes[i].position, to: camera)
let radius = planetNodes[i].position.y
let moveCameraAc = SCNAction.move(to: location, duration: 2)
moveCameraAc.timingMode = .easeInEaseOut
camera.runAction(moveCameraAc)

它总是会移动到场景中的不同位置。我无法弄清楚它是如何找到移动到哪里的。

提前致谢!

【问题讨论】:

我认为您应该将行星的位置转换为相机的父节点而不是相机本身。 感谢您的反馈。父节点是scene.rootNode。我试过了,那也没用。知道还有什么问题吗? 【参考方案1】:

我想通了!代码需要看起来像

let location = holderNodes[i].convertPosition(planetNodes[i].position, to: scene.rootNode)

holderNodes[i]是planetNodes[i]的父节点,scene.rootNode是camera的父节点。

【讨论】:

以上是关于SceneKit 相机没有移动到正确的位置的主要内容,如果未能解决你的问题,请参考以下文章

在 Scenekit 中移动相机

SceneKit 球体法线似乎随着相机移动而改变?

SceneKit:围绕任意点进行轨道运行而无需相机跳跃或将锚点移动到中心?

使用 Swift 在 Scenekit 中移动相机

SceneKit 移动相机

在 SceneKit 中禁用相机平移