SKShapeNode的替代品

时间:2015-06-25 20:43:19

标签: ios swift cocos2d-iphone sprite-kit

我有一个使用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,但是看起来有点矫枉过正(将整个lib用于CCDrawNode)。是否有SKShapeNode(和swift)的开源/公共扩展,这改善了绘图功能?要修复的最重要的是工件(节点中的白点/线)。如果没有公开的话,Cocos2d是我最好的选择吗?

1 个答案:

答案 0 :(得分:4)

虽然这篇文章有点陈旧,但我想我也可以自己回答,因为其他人也有同样的问题。

基本上,要删除行中的工件,您需要将行宽设置为小于2.0的大小(无论出于何种原因,当它小于此值时不会发生伪像)。设置线宽后,您需要像这样放大SKNode:

node.xScale = 10
node.yScale = 10

然后,这将使线显得比它显得更厚,并且线中没有伪影。

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