我有一个 SKCameraNode 作为孩子添加到我的 SKScene 中。我有一个捏合手势识别器,它使用手势识别器的缩放属性结合 SKCameraNode 的 setScale 方法来缩放场景。
class GameScene: SKScene
...
override func didMove(to view: SKView) {
let cameraNode = SKCameraNode()
cameraNode.position = self.midPoint
self.addChild(cameraNode)
self.camera = cameraNode
let pinchGesture = UIPinchGestureRecognizer()
pinchGesture.addTarget(self, action: #selector(scale(_:)))
view.addGestureRecognizer(pinchGesture)
...
@objc func scale(_ sender: UIPinchGestureRecognizer) {
guard let camera = self.camera, (sender.state == .began || sender.state == .changed) else {
print("GameScene - Pinch Gesture Action - No camera for scene")
return
}
let scale = 1 / sender.scale
let newScale = max(0.5, min(1.0, previousCameraScale * scale))
previousCameraScale = newScale
camera.setScale(newScale)
}
我的问题 - 我只想缩放 GameScene 的一些子项,而不是全部。有没有一种方法可以指定我想要缩放哪些?
您可以将不想缩放的节点作为子节点添加到相机中。
请参阅相机入门文档:
相机的后代总是相对于相机节点的原点进行渲染,并且不对它们应用相机的缩放或旋转。例如,如果您的应用程序显示分数或其他漂浮在游戏上方的数据,则渲染这些元素的节点应作为子节点添加到相机。