Камера не будет следовать за спрайтом

Я пытаюсь сделать игру на быстром SpriteKit (более конкретно, RPG). У меня проблема с тем, чтобы камера следовала за моим персонажем. Пока что все, что происходит, это то, что камера появляется за кадром, и вы даже не можете видеть персонажа. Спасибо!

import SpriteKit

class GameScene: SKScene {
     let cam = SKCameraNode()
     let james = SKSpriteNode()
     override func didMove(to view: SKView) {
          self.anchorPoint = .zero
          var background = SKSpriteNode(imageNamed: "image-3")
          background.size = CGSize(width: 1500, height: 1000);
          background.position = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)
          addChild(background)
          view.ignoresSiblingOrder = false

          self.camera = cam

          let james = Player()
          james.size = CGSize(width: 40, height: 40)
          james.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
          james.zPosition = 1

          self.addChild(james)

          }
    override func didSimulatePhysics() {
         self.camera!.position = james.position
    }
}

2 ответа

Вам нужно добавить камеру к вашей сцене. Я бы порекомендовал сделать камеру ребенком Джеймса, чтобы он всегда следовал за Джеймсом

import SpriteKit

class GameScene: SKScene {
     let cam = SKCameraNode()
     let james = SKSpriteNode()
     override func didMove(to view: SKView) {
          self.anchorPoint = .zero
          var background = SKSpriteNode(imageNamed: "image-3")
          background.size = CGSize(width: 1500, height: 1000);
          background.position = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)
          addChild(background)
          view.ignoresSiblingOrder = false

          self.camera = cam

          let james = Player()
          james.size = CGSize(width: 40, height: 40)
          james.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
          james.zPosition = 1
          James.addChild(cam)
          self.addChild(james)

     }

}

Я не вижу никакой физики в коде, который вы вставили. Так вероятно didSimulatePhysics не звонят. попробуйте переместить self.camera!.position = james.position к функции обновления.

редактировать

В последнее время, похоже, много проблем связано с тем, что сцена по умолчанию приостановлена. попробуйте установить...

self.isPaused = false

внутри

override func didMove(to view: SKView)

и ставить точку неожиданности на

self.camera!.position = james.position

чтобы его вызывали

Другие вопросы по тегам