我有一个滚动的大理石,我希望我的相机能够跟随它。我的问题是我的相机在旋转时也在我的物体周围旋转。
这是我的代码。
-(void) setupCameraOnMarble:(SCNNode*)marble
{
[cameraNode removeFromParentNode];
[marble addChildNode:cameraNode];
SCNLookAtConstraint *marbleStare = [SCNLookAtConstraint lookAtConstraintWithTarget:marble];
marbleStare.gimbalLockEnabled = YES;
cameraNode.constraints = @[marbleStare];
}
我认为变换约束应该有效,但我不明白它是如何工作的。
答案 0 :(得分:0)
你确定你需要让cameraNode成为大理石的孩子吗?
因为根据SKNode文档:当缩放或旋转节点的坐标系时,此转换既适用于节点自己的内容,也适用于其后代的内容see SKNode
所以我假设你需要从大理石上取下儿童相机。要从相机中获得跟随对象的行为,您可以在代码中的某处更新相机坐标,从而移动大理石
答案 1 :(得分:0)
我已经将我的相机放到我的球体上,并使我的类成为SCNSceneRendererDelegate协议并将其添加到渲染循环中:
-(void) renderer:(id)renderer updateAtTime:(NSTimeInterval)time
{
[cameraNode setPosition: SCNVector3Make(marbleNode.presentationNode.position.x, marbleNode.presentationNode.position.y + 5, marbleNode.presentationNode.position.z + 10)];
}
如果我记录了marble.presentationNode的坐标,他们正在改变,但我的相机仍然没有移动!