防止SCNNode退出屏幕

时间:2018-02-10 19:11:34

标签: ios scenekit arkit

我正在玩ARKit和SceneKit。

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

为了达到这个目的(防止节点A离开屏幕),我可以想到以下几种方法:

  1. 向节点A添加转换约束:我已尝试按以下方式执行此操作:
  2. [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。

    1. 更改摄像机本身的视野,以跟随节点,使其不会偏离视野。但是,我不知道如何开始。
    2. 我要做的事与此SpriteKit问题几乎相同 - Keeping an object within the screen. Swift SpriteKit

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

      如何阻止节点离开视野?

0 个答案:

没有答案