SpriteKit 捏合缩放相机

Bre*_*uro 6 ios sprite-kit swift

我似乎无法在任何地方找到如何实现相机捏合以放大 SpriteKit。

在我的 GameScene 中,我似乎可以在相机上运行放大操作:

let cameraNode = SKCameraNode()

cameraNode.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
addChild(cameraNode)
camera = cameraNode

let zoomInAction = SKAction.scale(to: 0.5, duration: 1)
cameraNode.run(zoomInAction)
Run Code Online (Sandbox Code Playgroud)

但我似乎无法弄清楚如何将其转换为捏缩放功能

Ste*_* G. 8

这是一个对我有用的解决方案,使用手势识别器:

class GameScene: SKScene {

  var previousCameraScale = CGFloat()

  override func sceneDidLoad() {
    let pinchGesture = UIPinchGestureRecognizer()
    pinchGesture.addTarget(self, action: #selector(pinchGestureAction(_:)))
    view?.addGestureRecognizer(pinchGesture)
  }

  @objc func pinchGestureAction(_ sender: UIPinchGestureRecognizer) {
    guard let camera = self.camera else {
      return
    }
    if sender.state == .began {
      previousCameraScale = camera.xScale
    }
    camera.setScale(previousCameraScale * 1 / sender.scale)
  }

}
Run Code Online (Sandbox Code Playgroud)

您可以轻松定义相机比例的最小值和最大值,并在需要时使用微积分的界限。