我是SceneKit的新手,我可以使用您的帮助: 我有两个SCNViews - 一个大的(skView)显示用户的场景,用户可以使用标准的allowCameraControl选项进行操作 - 左角的另一个小的(coordinateCrossView),它显示了一个坐标交叉,我希望镜像用户在大型SCNView中执行的任何相机导航
我通过制作ViewController来实现它,它将SCNViews保存为SCNRendererDelegate,并通过更新渲染器中的cross'方向:updateAtTime:方法如下:
- (void)renderer:(id<SCNSceneRenderer>)renderer updateAtTime:(NSTimeInterval)time {
[self.coordinateCrossView.scene.rootNode childNodeWithName:@"cross" recursively:YES].orientation = self.skView.pointOfView.orientation;
[self.coordinateCrossView setNeedsDisplay];
}
到目前为止一切顺利。但是,这仅在用户用手指在屏幕上操作大型SCNView时才有效。当手指离开屏幕时作为轻扫手势之后,大型SCNView中的对象继续旋转一点 - 但是坐标交叉不会更新。 有关为什么pointOfView.orientation没有捕获此行为的任何想法?
答案 0 :(得分:0)
我发现了问题所在:小坐标CrossView没有不断更新,因此即使坐标交叉也是如此。方向改变了,视图没有显示 - 即使调用了setNeedsDisplay。 我通过设置coordinateCrossView的isPlaying属性来解决这个问题,该属性强制它被更新。