2017-08-22 117 views

回答

1

只需使用此功能:

斯威夫特:

node.removeFromParentNode() 

Objective-C的

[node removeFromParentNode]; 
+0

是的,我明白了node.removeFromParent()方法。我想要做的是能夠在屏幕上出現後刪除一個對象 – JHarden13

+0

這種方法允許您在將對象放置到場景中後將其刪除,還有其他我錯過了什麼嗎? –

+0

耶無所謂我只是一個無知的新手,這完美的作品。謝謝! – JHarden13

0

我建議閱讀ARKit,SceneKit及其基本類的文檔。

如果您不希望它出現在屏幕上,您需要從場景圖中刪除節點。您需要從其父節點中刪除它。在Apples文檔中的SCNNode - Managing the Node Hierachy中閱讀更多關於它的內容。

+0

是的,我明白了node.removeFromParent()方法。我想要做的是能夠在屏幕上出現後刪除對象 – JHarden13

+0

因此,您想要檢查對象何時第一次渲染? – orangenkopf

0

要從場景視圖中刪除對象(SCNNode),你可以使用長按手勢。只需在您的viewDidLoad中添加以下代碼即可。

UILongPressGestureRecognizer *longPressGestureRecognizer = 
[[UILongPressGestureRecognizer alloc] initWithTarget:self 
action:@selector(handleRemoveObjectFrom:)]; 
longPressGestureRecognizer.minimumPressDuration = 0.5; 
[self.sceneView addGestureRecognizer:longPressGestureRecognizer]; 

然後處理你的手勢識別方法類似下面,

- (void)handleRemoveObjectFrom: (UILongPressGestureRecognizer *)recognizer { 

if (recognizer.state != UIGestureRecognizerStateBegan) { 
    return; 
} 
CGPoint holdPoint = [recognizer locationInView:self.sceneView]; 
NSArray<SCNHitTestResult *> *result = [self.sceneView hitTest:holdPoint 
                 options:@{SCNHitTestBoundingBoxOnlyKey: @YES, SCNHitTestFirstFoundOnlyKey: @YES}]; 
if (result.count == 0) { 
    return; 
} 

SCNHitTestResult * hitResult = [result firstObject]; 
[[hitResult.node parentNode] removeFromParentNode]; 

} 

希望這將幫助你解決你的問題。

謝謝

+0

我得到了一個解決方案,但這也起作用!謝謝! – JHarden13

相關問題