我有一个有多个节点的场景.我想通过点击它来选择一个节点(如果我点击什么我什么也不想发生)并让他只在XY轴上跟随我的手指(我知道Z轴上的位置).是否有任何方法可以将视图中的位置转换为SceneKit coords?
经过一些研究我发现了这个,这正是我想要的,但我没有得到代码.有人可以解释我或帮我解释如何解决我的问题?
https://www.youtube.com/watch?v=xn9Bt2PFp0g
最佳答案
func CGPointToSCNVector3(view: SCNView, depth: Float, point: CGPoint) -> SCNVector3 {
let projectedOrigin = view.projectPoint(SCNVector3Make(0, 0, depth))
let locationWithz = SCNVector3Make(Float(point.x), Float(point.y), projectedOrigin.z)
return view.unprojectPoint(locationWithz)
}
看起来很简单,我做了一个获得3个参数的函数.视图是附加场景的SCNView,深度是节点的z值,而点是表示3D场景在屏幕上投影的CGPoint.