菜鸟教程小白 发表于 2022-12-13 15:01:46

ios - 试图检测在scenekit上点击了什么节点


                                            <p><p>这是我的问题。我在 Maya 上创建了一个具有以下层次结构的对象:</p>

<pre><code>bigButton
   |
   |--redDome
   |       |
   |       |-- polySurface1
   |       |__ polySurface2
   |
   |--greenDome
          |
          |-- polySurface3
          |__ polySurface4
</code></pre>

<p>我将其转换为 DAE 并将其导入到 SceneKit。 Xcode 将另外两个节点添加到层次结构中。现在的层次结构是:</p>

<pre><code>bitButton Reference
   |
   |_ referenceRoot
          |
          |
          |__ bigButton
                   |
                   |--redDome
                   |       |
                   |       |-- polySurface1
                   |       |__ polySurface2
                   |
                   |--greenDome
                           |
                           |-- polySurface3
                           |__ polySurface4
</code></pre>

<p>现在我触摸按钮并尝试确定按钮是否被点击。对我来说唯一重要的节点是 <code>bigButton</code>。当我点击对象并使用此方法时:</p>

<pre><code>- (void) handleTap:(UIGestureRecognizer*)gestureRecognize
{
    // retrieve the SCNView
    SCNView *scnView = (SCNView *)self.view;

    // check what nodes are tapped
    CGPoint p = ;
    NSArray *hitResults = ;

    // check that we clicked on at least one object
    if( &gt; 0){
      // retrieved the first clicked object
      SCNHitTestResult *result = ;
</code></pre>

<p><code>result.node</code> 告诉我接触的节点是 <code>polySurface1</code> 或 <code>polySurface2</code> 什么的。它永远不会告诉我 <code>bigButton</code> 被点击了,因为那只是一个节点,而不是表面。</p>

<p>好的,我可以使用 <code>parentNode</code> 来检测父节点,但这很愚蠢,因为 <code>result.node</code> 可以位于 <code>bigButton< 之上或之下的不同层次结构级别</code>。这是唯一能做到这一点的蹩脚模式吗?遍历层次结构寻找正确的节点还是有什么漂亮的方法?</p>

<p>谢谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><blockquote>
<p>The only node that matters to me is <code>bigButton</code>.</p>
</blockquote>

<p>如果你的意思是你永远不会有兴趣知道任何其他节点被命中,那么你应该看看 <code>SCNHitTestRootNodeKey</code>HitTest 选项。</p>

<p>指定 <code>bigButton</code> 作为根节点意味着获得 <em>any</em>HitTest 结果意味着 <code>bigButton</code> 被命中,无需进行任何检查.</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 试图检测在scenekit上点击了什么节点,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35803845/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35803845/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 试图检测在scenekit上点击了什么节点