2017-05-04 71 views
2

我有一個SCNNode的「ExSCNNode」子類來向SCNNode添加更多的屬性和行爲。Swift SCNNode子類hittest總是返回SCNNode * not *子類

class ExSCNNode : SCNNode { 
... 
} 

我比用ExSCNNode構建場景。

let testnode = ExSCNNode() 

當hittesting場景:

// check what nodes are tapped 
let p = gestureRecognize.location(in: scnView) 
let hitResults = scnView.hitTest(p, options: [:]) 

// check that we clicked on at least one object 
if hitResults.count > 0 { 

for hit in hitResults { 
let hitnode = hit.node 
... 

hitnode是SCNNode不是ExSCNNode。 但我想讓ExSCNNode訪問高級功能。

如何獲得子類而不是SCNNode類?

+0

您需要將其創建爲'ExSCNNode'。您沒有將代碼包含在創建的位置。 –

+0

我創建了一個ExSCNodes的場景。只是在上面的例子中添加了一個 – Bernd

回答

4

只投的對象爲子類:

// check what nodes are tapped 
let p = gestureRecognize.location(in: scnView) 
let hitResults = scnView.hitTest(p, options: [:]) 

for hit in hitResults { 
    if let hitnode = hit.node as? ExSCNNode { 

     … 
    } 

但是如果你想所有您的節點具有相同的,自定義屬性,只需使用一個擴展:

extension SCNNode { 
    var description: String? = nil 
    … 
}