SpriteKit如何选择性扩展节点



作为背景,假设我有一个地图 - 从字面上看,我的Skscene内部呈现了路线图。道路由Skshapenodes代表,路径设置为一系列CGPoints。我希望用户能够放大/输出,因此我创建了一个相机节点:

var cam: SKCameraNode = SKCameraNode()

并且由于用户希望通过滚动触控板滚动来放大/删除:

let zoomInAction = SKAction.scale(to: CGFloat(scale), duration: 0.0)
camera?.run(zoomInAction)

这很好,但是我还有一个额外的复杂性,我不确定如何处理。我想要一些节点(例如,示例道路名称标签,图标,地图传奇)可以免于缩放 - 使得用户缩放/缩放道路名称标签的大小保持相同,而道路形状则按比例缩放。

不确定如何处理?我可以有一个场景的层次结构,以便一个层尺度,而另一个尺度不缩放?可以通过将相机节点连接到"可扩展"层来实现吗?任何帮助!

以下情况。如果您希望通过相机变化节点刻度,只需将节点添加到相机树中即可。不要忘记将摄影机添加到场景中,否则,连接到相机的那些节点不会呈现。

在以下内容中,label通过摄像头渲染,不会改变比例。

            let  label =   SKLabelNode.init(text: "GFFFGGG")
            label.fontSize = 30
            label.fontColor = UIColor.black
            label.name = "cool"
            label.zPosition = 100
            let camera = SKCameraNode()
            camera.addChild(label)
            scene.addChild(camera)
            scene.camera = camera
         camera.position = CGPoint.init(x: 0, y: 0)
            camera.xScale = 2.0

如果您之前有节点连接到场景,您可以从父母中删除节点,然后添加到相机中。
如果使用函数批处理处理它们不应该像想到的那样难。

也许没有必要:

您可以通过camera.convert(point: , from:)等将它们转移到摄影树上。

最新更新