У меня проблема с позицией 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 я мог бы добавить узел и применить этот код вокруг? Затем я мог бы вернуться к своему классу игрока, в котором я уже определил позицию над моим переопределением fun c didMove.
let initialPlayerPosition = CGPoint(x: 50, y: 350)
Я попробовал это, и GameScene начала играть, есть ли лучший метод для достижения такого результата? Я предполагаю, что код можно изменить, чтобы приспособить его, но я все еще изучаю Xcode.