如何设置SKCameraNode相对于节点的位置x和y?

时间:2017-06-29 12:59:22

标签: ios swift swift3 sprite-kit

我正在以编程方式设置我的相机节点。我的目标是让相机跟随玩家节点的x轴,但让相机的y轴高于“player.position.y”,类似于“player.position.y + 300”。

我在谷歌上搜索了一下这个问题后发现了这个问题:

cam.position = CGPoint(x:player.position.x,y:player.position.y + 500)

我把它放在didMove(to :)中以及相机的设置:

cam = SKCameraNode() //initialize and assign an instance of SKCameraNode to the cam variable.
    self.camera = cam //set the scene's camera to reference cam
    //cam.setScale(1.3)

cam.position = CGPoint(x: player.position.x, y: player.position.y + 500)
    addChild(cam) //have cam be a child

我尝试在添加子(cam)行之前和之后放置它,但是cam.position行没有效果。

我已经尝试将我的相机设置为玩家节点和场景的孩子,但是使用任何一种方法我都可以让相机跟随播放器,但我无法弄清楚如何操纵X和Y分别。我能够影响相机位置的唯一方法是使用“设置比例”,但更多的是全局放大/缩小。

非常感谢任何建议。

编辑:答案的第一部分就是我所需要的:

cam = SKCameraNode()
player.addChild(cam)
cam.position = CGPoint(x:0,y:500)
self.camera = cam

1 个答案:

答案 0 :(得分:2)

为什么不让相机成为播放器的孩子,然后将相对位置设置为+500,这样您就不必担心再次设置相机x的位置

cam = SKCameraNode()
player.addChild(cam)
cam.position = CGPoint(x:0,y:500)
self.camera = cam

然后在最后更新时,根据您的需要设置相机y:

let cam = player.childNode[0] as! SKCameraNode //Do whatever you need to do to find the camera
cam.position.y = 500 - player.position.y //This way if the player goes up 1 point, the camera moves down one point thus keeping it on the same spot