Scenekit hitTestWithSegment only returns 第一次命中(突然)

Scenekit hitTestWithSegment only returns first hit (all of a sudden)

基本上只命中TestWithSegment returns第一次命中。

我有多个节点在 Z 轴上以 1 到 3 行的形式移动。类似于摇滚乐队之类的游戏。当一行 2 或更多通过线段时,它只 returns 左边的第一个节点。

hit = scene.rootNode.hitTestWithSegment(from: SCNVector3(-3, 0, 0) , to: SCNVector3(3, 0, 0), options: nil)

if hit.count > 0{
   print(hit.count)
}

输出:1

我也试过将选项设置为

[SCNHitTestOption.firstFoundOnly.rawValue: false]

我也一样。

我不知道出了什么问题。 hitTestWithSegment 一直按预期工作,直到我今天打开 xcode。我没有做任何更改,没有软件更新,只是现在工作方式不同了。我剥离了所有代码以进行实质上的命中测试,但我一次无法获得超过 1 次命中

编辑:我找到了一个解决方法,但我不明白它为什么有效或为什么它一开始就坏了。

我将我的 from: 换成: vectors (3, 0, 0), (-3, 0, 0) 并且它再次工作

反转段应该只改变首先返回哪个节点而不是多少。

编辑:这不在 iOS,它在 Mac

Apple 决定通过更改 hittest 函数的默认行为来给 IOS 11 中的每个人一个惊喜。由于 IOS 11 您需要明确告诉 hittest 搜索所有节点而不仅仅是 return 第一个命中结果:

hitTestOptions[SCNHitTestOption.searchMode] = SCNHitTestSearchMode.all.rawValue as NSNumber

如果有多个节点被命中,这会将其设置回return命中结果数组。