使用 SKCameraNode 创建 SKScene(iOS 9 及更高版本)

你可以将 SKCameraNode 放入 SKScene 中,以定义 SKView 中显示场景的哪个部分。将 SKScene 视为一个 2D 世界,其上方有一个漂浮在其上的摄像头:SKView 将显示摄像头看到的内容。

例如,相机可以附加到主角的精灵上,以跟随滚动游戏的动作。

SKCameraNode 有四个参数,用于定义场景的哪个部分:

  • position :这是摄像机在场景中的位置。渲染场景以将此位置放置在 SKView 的中间。
  • xScaleyScale :这些定义了场景在视图中的缩放方式。保持这两个值相同,以避免扭曲视图。值 1 表示没有缩放,小于 1 的值将放大(使精灵看起来更大),高于 1 的值将缩小(使精灵看起来更小)。
  • zRotation :这定义了视图在视图中的旋转方式。零值将不是旋转。该值以弧度为单位,因此 Pi(3.14 …)的值将使视图上下颠倒。

以下代码假设已经存在名为 skView 的 SKView(例如,使用 Interface Builder 创建全屏 SKView 中定义 ),并且已定义了名为 GameView 的 SKScene 的子类。此示例仅设置摄像机的初始位置,你需要移动摄像机(以与场景中其他 SKSpriteNodes 相同的方式)滚动视图:

在 Swift 3 中

    let sceneSize = CGSize(width:1000, height:1000)
    let scene = GameScene(size: sceneSize)
    scene.scaleMode = .aspectFill

    let camera = SKCameraNode()
    camera.position = CGPointM(x:500, y:500)
    camera.xScale = 1
    camera.yScale = 1
    camera.zRotation = 3.14
    scene.addChild(camera)
    scene.camera = camera

    skView.presentScene(scene)