gpt4 book ai didi

ios - 如何检查在 scenekit iOS 中点击了哪个 SCNNode

转载 作者:行者123 更新时间:2023-11-29 11:37:53 24 4
gpt4 key购买 nike

目前我在 SceneView 中有三个 SCNNode。我想获取索引路径,例如哪个立方体被 Tapped。

这是我的点击事件代码

- (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;
}

这是我创建 SCNNode 的代码。

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

我想如果我点击第一个立方体,我应该得到索引路径为零。如何实现这个?

最佳答案

我假设 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;
}

关于ios - 如何检查在 scenekit iOS 中点击了哪个 SCNNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48095691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com