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( > 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]