0

我有一个camerNode位置问题。我已经包含了下面的代码+尝试解决这个问题而没有任何进展。本质上,在我的 GameScene 中,当在场景中移动时,我将相机完美锁定在玩家身上,我实际上正在尝试修改这一点,以便相机稍微领先玩家,这意味着我的玩家实际上位于左侧屏幕,几乎就像一个偏移量 (+ 200) :) 如果存在的话。

编码:

        class GameScene: SKScene, SKPhysicsContactDelegate {
        // Create a constant cam as a SKCameraNode:
        let cam = SKCameraNode()




        override func didMove(to view: SKView) {

        // vertical center of the screen:
        screenCenterY = self.size.height / 2

        // Assign the camera to the scene
        self.camera = cam


        //Add the camera itself to the scene's node tree"
        self.addChild(self.camera!)
        // Position the camera node above the game elements:
        self.camera!.zPosition = 50

}

    override func didSimulatePhysics() {

        // Keep the camera locked at mid screen by default:
          var cameraYPos = screenCenterY
          cam.yScale = 1
          cam.xScale = 1

          // Follow the player:
          if (player.position.y > screenCenterY) {
          cameraYPos = player.position.y
          cam.yScale = newScale
          cam.xScale = newScale



        }

        // Camera Adjustment:
        self.camera!.position = CGPoint(x: player.position.x, y: cameraYPos)

我最初认为我可以通过将播放器更改为另一个 SKSpriteNode 来克服这个问题。即在我的 HUD 类中,我可以添加一个节点并应用此代码?然后我可以参考我的播放器类,其中我已经在覆盖函数 didMove 上方定义了位置。

         let initialPlayerPosition = CGPoint(x: 50, y: 350)

我确实尝试过这个并且GameScene开始播放,有没有更好的方法来实现这个结果?我认为可以更改代码以适应,但我仍在学习 Xcode。

4

1 回答 1

0

没关系 - 解决了!

摄像机调整语句 - player.position.x + 200) :)

这是诀窍!

于 2020-05-27T20:24:52.887 回答