我正在玩ARKit和SceneKit .

我有一个节点A - 这是我添加到rootNode的唯一节点 . 允许节点A通过移动电话自由移动,但不允许它离开屏幕 .

为了实现这一点(防止节点A离开屏幕),我可以想到以下方法:

  • 向节点A添加转换约束:我尝试按以下方式执行此操作:

[SCNTransformConstraint transformConstraintInWorldSpace:false withBlock:^ SCNMatrix4(SCNNode * _Nnnull node,SCNMatrix4 transform){
bool visible = [self.sceneView isNodeInsideFrustum:node withPointOfView:self.cameraNode];
if(visible){
NSLog(@“visible =%d”,可见);
}
回归变换;
}];

但是,我被卡住了因为isNodeInsideFrustum总是返回false,即使节点A可见 .

  • 更改摄像机本身的视野,以跟随节点,使其不会偏离视野 . 但是,我不知道如何开始 .

我想要做的就是这里的SpriteKit问题几乎相同 - Keeping an object within the screen. Swift SpriteKit

是的,因为这是ARKit,我意识到节点A会在被屏幕边缘拖动时改变它的位置 .

如何防止节点离开视野?