2017-06-29 83 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