裁剪SKReferenceNode

时间:2017-05-23 13:18:36

标签: swift sprite-kit skreferencenode

我已经设置了一个SKScene用作SKReferenceNode。雪橇是一个SKSpriteNode,在参考节点场景中定义了一个自定义类,所有的狗都是雪橇精灵的子项。自定义类和使用参考节点都很好,我的问题是我无法" crop"现场只能显示N只狗。就好像在将参考节点放入另一个场景之后,该父场景忽略了参考节点的宽度/高度参数并且只显示其中的所有内容。所以问题是,这可能吗?或者在父场景中使用时,SKReferenceNodes是否不符合场景宽度和高度属性?

第一张图片是全景参考场景(70x425)。如果我只想要显示底部的两只狗,那么当我以编程方式更改高度时,第二个图像是应该的框架。

enter image description here enter image description here

class SledTeam: SKSpriteNode {
    var dogTeam = [Int]()
    required init?(coder aDecoder: NSCoder) {
        switch dogTeam.count {
            case 7,8:
                self.scene?.size.height = 425
                break
            case 5,6:
                self.scene?.size.height = 335
                break
            case 3,4:
                self.scene?.size.height = 260
                break
            case 1,2:
                self.scene?.size.height = 190
                break
            default:
                break
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我的想法是在你的sks参考文件中使用一个不可见的精灵节点,其大小包含所有节点。 在调用这个不可见的“基础”节点并裁剪它之后。 要获取不可见节点,您可以使用此扩展名:

extension SKReferenceNode {
    func getBasedChildNode () -> SKNode? {
        if let child = self.children.first?.children.first {return child}
        else {return nil}
    }
}

有关其他详细信息,请参阅我的旧帖子: Add SKReferenceNode/SKScene to another SKScene in SpriteKit