我有一个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。