放大或缩小时如何缩放SKNode?

时间:2020-04-28 21:30:38

标签: swift sprite-kit zoom sknode

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

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

{{ Auth::user()->age }}
@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
    }
}

1 个答案:

答案 0 :(得分:1)

您在使用SpriteKit吗?

如果是这样,您可能可以在相机节点规模上实现“缩放”功能:https://developer.apple.com/documentation/spritekit/skcameranode/getting_started_with_a_camera

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

    if sender.state == .began || sender.state == .changed {
        self.camera.xScale = sender.scale
        self.camera.yScale = sender.scale
    }
}

苹果医生说:

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

您可能应该反转发送者比例值:self.camera.xScale = -sender.scale