Swift 放大或缩小时如何缩放节点?

Swift 放大或缩小时如何缩放节点?,swift,sprite-kit,zooming,sknode,Swift,Sprite Kit,Zooming,Sknode,我实现了一个缩放功能,但是我用来移动播放器的节点,指向播放器移动方向的箭头,保持不变大小,我不知道如何按比例缩放它们,所以如果我放大,按钮会变小并靠近播放器以保持在屏幕上,反之亦然 以下是我编写的允许缩放的代码: @objc func handlePinch(sender: UIPinchGestureRecognizer) { guard sender.view != nil else { return } if sender.state == .began || sende

我实现了一个缩放功能,但是我用来移动播放器的节点,指向播放器移动方向的箭头,保持不变大小,我不知道如何按比例缩放它们,所以如果我放大,按钮会变小并靠近播放器以保持在屏幕上,反之亦然

以下是我编写的允许缩放的代码:

@objc func handlePinch(sender: UIPinchGestureRecognizer) {
    guard sender.view != nil else { return }

    if sender.state == .began || sender.state == .changed {
        sender.view?.transform = (sender.view?.transform.scaledBy(x: sender.scale, y: sender.scale))!
        sender.scale = 1.0
    }
}

你在用SpriteKit吗

如果是这样,您可能可以使用摄影机节点比例来实现“缩放”功能:

@objc func handlePinch(发送方:UIPinch测试识别器){
guard sender.view!=无其他{
返回
}
如果sender.state==.start | | sender.state==.changed{
self.camera.xScale=sender.scale
self.camera.yScale=sender.scale
}
}
苹果的医生说:

因为摄影机是一个节点,所以可以像其他节点一样定义其在场景中的位置。动作、物理和GameplayKit行为也可以应用于摄影机节点。使用摄影机节点渲染场景时,会发生以下情况: 渲染场景以使摄像机节点的原点放置在场景的中间。 摄影机节点的xScale、yScale和zRotation属性的反转将应用于场景中的所有节点


您可能应该反转sender.scale值:
self.camera.xScale=-sender.scale

我尝试反转sender.scale,但按钮只是反转了位置,但它们保持了相同的大小,在您最初触摸屏幕后没有移动,当它没有倒转时,它不会做任何事情。我在我的帖子中假设你有一个摄像头
self.camera
它是用来渲染场景的同一个摄像头?我有一个摄像头跟随播放器,我试过使用那个摄像头,我也试过使用一个没有连接到播放器的摄像头,只有场景,两个都不起作用
let pinch = UIPinchGestureRecognizer(target: self, action: #selector(handlePinch(sender:)))
view.addGestureRecognizer(pinch)