これは私の問題です。次の階層を持つオブジェクトを Maya で作成しました。
bigButton
|
|-- redDome
| |
| |-- polySurface1
| |__ polySurface2
|
|-- greenDome
|
|-- polySurface3
|__ polySurface4
それを DAE に変換して SceneKit にインポートします。Xcode によってさらに 2 つのノードが階層に追加されます。階層は次のようになりました。
bitButton Reference
|
|_ referenceRoot
|
|
|__ bigButton
|
|-- redDome
| |
| |-- polySurface1
| |__ polySurface2
|
|-- greenDome
|
|-- polySurface3
|__ polySurface4
ボタンに触れて、ボタンがタップされたかどうかを判断しようとしています。私にとって重要な唯一のノードはbigButton
. オブジェクトをタップしてこのメソッドを使用すると:
- (void) handleTap:(UIGestureRecognizer*)gestureRecognize
{
// retrieve the SCNView
SCNView *scnView = (SCNView *)self.view;
// check what nodes are tapped
CGPoint p = [gestureRecognize locationInView:scnView];
NSArray *hitResults = [scnView hitTest:p options:nil];
// check that we clicked on at least one object
if([hitResults count] > 0){
// retrieved the first clicked object
SCNHitTestResult *result = [hitResults objectAtIndex:0];
result.node
触れたノードがあったpolySurface1
かどうかを教えてくれますpolySurface2
。bigButton
それは単なるノードであり、サーフェスではないため、タップされたことは決してわかりません。
OK、親のノードを検出するために使用できますが、上または下の異なる階層レベルにある可能性があるparentNode
ため、これはばかげています。これはそれを行う唯一のラメモードですか?階層を横断して正しいノードを検索するには、または美しい方法はありますか?result.node
bigButton
ありがとう。