我想让我的SKCameraNode从左下角开始,并将我的背景也固定在那里。当我将锚点设置为CGPointZero时,以下是我的相机显示的内容:
编辑: 有趣的是,如果我将我的AnchorPoint设置为CGPoint(x:0.5,y:0.2),我会把它排成一行。它与相机比例有关吗?
编辑2: 如果我改变场景大小,我可以改变背景节点出现的位置。通常它们的锚点位于屏幕中央,这意味着场景的anchorPoint位于屏幕的中心。
我是使用SKCameraNode的新手,因此我可能错误地设置了它的约束。
以下是我的相机限制:我还没有添加我的播放器,但我想在添加播放器之前先设置我的世界。我再次尝试将所有内容都锚定在CGPointZero之外。
//Camera Settings
func setCameraConstraints() {
guard let camera = camera else { return }
if let player = worldLayer.childNodeWithName("playerNode") as? EntityNode {
let zeroRange = SKRange(constantValue: 0.0)
let playerNode = player
let playerLocationConstraint = SKConstraint.distance(zeroRange, toNode: playerNode)
let scaledSize = CGSize(width: SKMViewSize!.width * camera.xScale, height: SKMViewSize!.height * camera.yScale)
let boardContentRect = worldFrame
let xInset = min((scaledSize.width / 2), boardContentRect.width / 2)
let yInset = min((scaledSize.height / 2), boardContentRect.height / 2)
let insetContentRect = boardContentRect.insetBy(dx: xInset, dy: yInset)
let xRange = SKRange(lowerLimit: insetContentRect.minX, upperLimit: insetContentRect.maxX)
let yRange = SKRange(lowerLimit: insetContentRect.minY, upperLimit: insetContentRect.maxY)
let levelEdgeConstraint = SKConstraint.positionX(xRange, y: yRange)
levelEdgeConstraint.referenceNode = worldLayer
camera.constraints = [playerLocationConstraint, levelEdgeConstraint]
}
}
我一直在使用Udemy课程来学习SKCameraNode,我一直在尝试修改它。
这是我设置SKMViewSize的地方:
convenience init(screenSize: CGSize, canvasSize: CGSize) {
self.init()
if (screenSize.height < screenSize.width) {
SKMViewSize = screenSize
}
else {
SKMViewSize = CGSize(width: screenSize.height, height: screenSize.width)
}
SKMSceneSize = canvasSize
SKMScale = (SKMViewSize!.height / SKMSceneSize!.height)
let scale:CGFloat = min( SKMSceneSize!.width/SKMViewSize!.width, SKMSceneSize!.height/SKMViewSize!.height )
SKMUIRect = CGRect(x: ((((SKMViewSize!.width * scale) - SKMSceneSize!.width) * 0.5) * -1.0), y: ((((SKMViewSize!.height * scale) - SKMSceneSize!.height) * 0.5) * -1.0), width: SKMViewSize!.width * scale, height: SKMViewSize!.height * scale)
}
我怎样才能让相机受到我的世界的约束,并将所有东西都固定在CGPointZero上?