如何在ARKitExample中检测我在sceneView中触摸过哪一个对象?

时间:2017-09-12 08:43:40

标签: ios swift arkit

如果我在一个场景视图中添加多个虚拟对象(两个椅子),则在Apple的sceneView

。如何检测ARKitExample sceneView.hitTest()SCNHitTestResult触及的哪一把椅子?

result.node函数将返回SCNNode的数组,但SELECT Fruits.Fruit, Colour.Colour, Pests.Pest FROM Pests INNER JOIN [Linking Table] AS LT1 ON Pests.ID = LT1.Pest INNER JOIN Fruits ON LT1.Fruit = Fruits.ID INNER JOIN [Linking Table] AS LT2 ON Fruits.ID = LT2.Fruit INNER JOIN Colour ON LT2.Colour = Colour.ID 是{{1}}的类,我不知道我触摸的对象是哪一个椅子?

任何人都可以帮忙吗?非常感谢

2 个答案:

答案 0 :(得分:2)

您可以跟踪哪些节点属于哪些对象。我通常使用Set,因为SCNNode是可以清除的。然后,您可以轻松测试节点是否属于您感兴趣的对象之一:

guard let result = sceneView.hitTest(location, options: nil).first else {
    return
}
if myObjectNodes.contains(result.node) { //myObjectNodes is declared as  Set<SCNNode>
    //This is a match
}

答案 1 :(得分:1)

要详细说明@JoshHomann的答案,你可以做类似的事情

Swift 4

Service