簡體   English   中英

如何設置SKCameraNode相對於節點的位置x和y?

[英]How can I set an SKCameraNode's position x and y relative to a node?

我正在以編程方式設置我的相機節點。 我的目標是使攝像機跟隨玩家節點的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

我試過在添加child(cam)行之前和之后放置它,但是cam.position行沒有任何作用。

我已經嘗試將相機設置為播放器節點和場景的子級,但是通過這兩種方法,我都可以使相機跟隨播放器,但無法弄清楚如何分別操縱X和Y。 我能夠影響相機位置的唯一方法是使用“設置比例”,但這更多的是全局縮放。

任何建議將不勝感激。

編輯:答案的第一部分就是我所需要的:

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

為什么不只是將相機作為玩家的子代,然后將相對位置設置為+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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM