2017-06-29 203 views
0

我正在以编程方式设置我的摄像机节点。我的目标是使相机跟随播放器节点的x轴,但相机的y轴高于“player.position.y”,如“player.position.y + 300”。如何设置SKCameraNode相对于节点的位置x和y?

我发现这个Google上搜寻了一会儿这个问题后:

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

我把这个在didMove(与摄像机的设置:)一起:

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 

回答

2

为什么不干脆让相机球员的孩子,然后设置相对位置+500,让你再也不用担心关于重新设置相机x位置

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

然后在你的最终更新,设置您的相机Ÿ根据你所需要的:

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 
+0

感谢您的回应!这几乎是完美的!您的代码按预期工作,但有副作用。 – genericguy25

+0

有什么副作用? – Knight0fDragon

+0

感谢您的回复!这几乎是完美的!您的代码按预期工作,但有副作用。当玩家跳转到我的玩家时(applyImpulse),整个场景似乎缓慢地跟随着玩家,直到玩家再次击中地面。 – genericguy25