我正在玩ARKit和SceneKit。
我有一个节点A - 这是我添加到rootNode的唯一节点。允许节点A通过移动电话自由移动,但不允许它离开屏幕。
为了达到这个目的(防止节点A离开屏幕),我可以想到以下几种方法:
[SCNTransformConstraint transformConstraintInWorldSpace:false withBlock:^SCNMatrix4(SCNNode * _Nonnull node, SCNMatrix4 transform) { bool visible = [self.sceneView isNodeInsideFrustum:node withPointOfView:self.cameraNode]; if (visible) { NSLog(@"visible=%d", visible); } return transform; }];
然而,即使节点A可见,我仍然坚持isNodeInsideFrustum总是返回false。
我要做的事与此SpriteKit问题几乎相同 - Keeping an object within the screen. Swift SpriteKit
是的,因为这是ARKit,我意识到节点A会在它被屏幕边缘拖动时改变它的位置。
如何阻止节点离开视野?