SKShapeNode的替代品

Aar*_*ron 7 cocos2d-iphone ios sprite-kit swift

我有一个用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)
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于这被设计为一个调试功能(Sprite-kit绘图),它没有针对我正在做的事情进行优化,更大的问题是该行有伪影(因为它的线宽大于2).这些看起来像这样:http: //i.stack.imgur.com/ccQ1s.png

考虑到这一点,我已经推断使用Sprite-kit的SKShapeNode对我来说不是一个选项,除非有人知道如何解决上述问题.我已经研究了cocos2d,但是看起来有点矫枉过正(使用整个lib只是一个CCDrawNode).是否有SKShapeNode(和swift)的开源/公共扩展,这改善了绘图功能?要修复的最重要的是工件(节点中的白点/线).如果没有任何公开,Cocos2d是我的最佳选择吗?

Aar*_*ron 4

虽然这篇文章有点旧,但我想我最好自己回答一下,以防其他人遇到同样的问题。

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

node.xScale = 10
node.yScale = 10
Run Code Online (Sandbox Code Playgroud)

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

您可能还必须将 antialiased 属性设置为 false,否则线条会显得非常模糊。