我有一个SKCameraNode,它是作为一个孩子添加到我的SKScene中的。我有一个捏手势识别器,它使用手势识别器的scale属性结合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的一些孩子,而不是所有的孩子。有什么方法可以指定我想缩放的孩子吗?
1条答案
按热度按时间drkbr07n1#
可以将不想缩放的节点作为子节点添加到摄影机。
请参阅Getting Started with a Camera文档:
摄影机的子节点始终相对于摄影机节点的原点进行渲染,而不会对其应用摄影机的缩放或旋转。例如,如果您的应用显示分数或其他数据浮动在游戏玩法上方,则渲染这些元素的节点应作为子节点添加到摄影机。