2017-05-04 12 views
2

SCNNodeのプロパティと動作を追加するためにSCNNodeのサブクラス "ExSCNNode"があります。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のシーンを作成します。上記の例の1つだけが追加されました – 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 
    … 
} 
関連する問題