2015-04-02 51 views
3

我有一个包含多个节点的场景。我想通过点击它来选择一个节点(如果我不点击任何事情我不想发生任何事情),并让他只在XY轴(我知道Z轴上的位置)上跟随我的手指。有什么方法可以将位置转换为SceneKit坐标吗?使用触摸移动SceneKit中的特定节点

经过少数研究,我发现这正是我想要的,但我没有得到代码。有人可以解释我或帮助我认识如何解决我的问题? https://www.youtube.com/watch?v=xn9Bt2PFp0g

+0

请参阅http://stackoverflow.com/a/22944797/2997825 – mnuages 2015-04-02 08:21:20

+0

已经见过。这不会帮助我 – 2015-04-02 08:30:19

回答

2
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。

+1

你能分享代码吗?我正在研究目标c,并且我想要移动节点的hitTest reult。之后如何继续? – madLokesh 2016-07-19 05:20:36