2015-04-02 48 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