目前我在SceneView.i中有三个SCNNode想要获取索引路径,就像使用Tapped一样。
这是我的Tap事件代码
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:gameVW];
SCNHitTestResult *hitTestResult = [[gameVW hitTest:touchPoint options:nil] firstObject];
SCNNode *hitNode = hitTestResult.node;
}
这是我创建SCNNodes的代码。
SCNBox *Box = [SCNBox boxWithWidth:2.0 height:2.0 length:2.0
chamferRadius:Radius];
Box.firstMaterial.diffuse.contents = [UIColor whiteColor];
SCNNode *cubeNode = [SCNNode nodeWithGeometry:Box];
[ArrBoxNode addObject:cubeNode];
self.sceneView.backgroundColor = [UIColor redColor];
self.view.backgroundColor = [UIColor grayColor];
cubeNode.position = SCNVector3Make(4,0,0);
[scene.rootNode addChildNode:cubeNode];
self.sceneView.scene = scene;
[self.sceneView sizeToFit];
我想要如果我点击第一个多维数据集而不是我应该获得indexpath Zero.how来实现这个目标?
答案 0 :(得分:1)
我认为ArrBoxNode
是存储多维数据集的数组。在这种情况下,您可以通过简单的for循环检查哪个节点被命中。
- (NSIndexPath*) indexPathFor:(SCNNode*) hitNode {
for (int i = 0; i < [ArrBoxNode count]; i++) {
SCNNode* node = ArrBoxNode[i];
if (node == hitNode) {
return [NSIndexPath indexPathForItem:i inSection:0];
}
}
return nil;
}