我在使用hitTest时面临困境:选项:在iOS 11的SceneKit中。
在maping应用程序中,我有一个terrain节点。使用hitTest:选项:我能够长时间在屏幕上触摸点上的地形点。在iOS 11上发布的二进制文件以及iOS 10模拟器的Xcode 9编译二进制文件仍然可以正常工作。
但iOS 11 SDK上的iOS 11二进制文件提供了完整的结果。从hitTest返回数组:options:可能不包含任何结果或太多。而且,大多数情况下,结果都没有效果。以下是用于说明这一点的图像。所有图像都来自没有隐藏节点的场景。
编辑:我今天使用hitTestWithSegmentFromPoint:toPoint:options进行了测试:并得到了错误的结果。
首先使用工作模拟器。
它显示地形上的正常命中。击球点用红球表示。由于它的中心位于地形上,所以它在地形中是半插入的。
这两个图像显示了一个" ray"越过地形3次。我们在地形上正确放置了3个点击。第二个图像改变了视角以显示3点。
现在失败的iOS 11情况:
在这张照片上,我们得到了一次打击,但它是#34;无处可见"在两座山之间,而不是在地形上。
最后两张照片显示其他尝试有4次和16次点击,所有"在蓝色"与地形无关。
有时候击中了#34;远离"经过地形,有时它们位于相机和地形之间。
答案 0 :(得分:1)
我在iOS 11上遇到了同样的问题。我的解决方案:
var hitTestOptions = [SCNHitTestOption.sortResults : NSNumber(value: true),
SCNHitTestOption.boundingBoxOnly : NSNumber(value: true)]
if #available(iOS 11.0, *) {
hitTestOptions[SCNHitTestOption.searchMode] = SCNHitTestSearchMode.all.rawValue as NSNumber
}