SKShapeNode 的替代品

Alternatives to SKShapeNode

我有一个用 SpriteKit 设计的游戏,它严重依赖 1 个 SKShapeNode(这是一条线)。我是这样写的:

        if let path = createPathToMove() {
        let shapeNode = SKShapeNode()
        shapeNode.path = path
        shapeNode.name = "line"
        shapeNode.strokeColor = UIColor.blackColor()
        shapeNode.lineWidth = 20
        shapeNode.zPosition = 5
        shapeNode.antialiased = false
        shapeNode.lineCap = kCGLineCapRound
        self.world!.addChild(shapeNode)
    }

不幸的是,由于这是作为调试功能(Sprite-kit 绘图)设计的,因此并未针对我正在做的事情进行优化,而且更大的问题是线条有瑕疵(因为它的线条宽度大于2).那些看起来像这样: http://i.stack.imgur.com/ccQ1s.png

考虑到这一点,我推断使用 Sprite-kit 的 SKShapeNode 不是我的选择,除非有人知道如何解决上述问题。我调查了 cocos2d,但似乎有点矫枉过正(仅将整个库用于 CCDrawNode)。 SKShapeNode(和swift)是否有任何开放的 source/public 扩展,可以改进绘图功能?要修复的最重要的事情是工件(节点中的白色 dots/lines)。如果什么都没有 public,Cocos2d 是我最好的选择吗?

虽然这个post有点老了,但我想我还是自己回答吧,以防其他人有同样的问题。

基本上,要去除线条中的瑕疵,您需要将线条宽度设置为小于 2.0 的大小(无论出于何种原因,小于此值时都不会出现瑕疵)。设置线宽后,您将需要像这样放大 SKNode:

node.xScale = 10
node.yScale = 10

这将使线条看起来比实际粗得多,并且线条中没有伪影。

您可能还需要将抗锯齿 属性 设置为 false,否则线条会显得很模糊。