SKShapeNode的替代方案

7

我有一个使用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)扩展,可以改进绘图功能?最需要解决的问题是伪像(节点中的白色点/线)。如果没有任何公开的内容,那么Cocos2d是我的最佳选择吗?


1
你能否将它制作成一个实际的封闭多边形,而不是使用一条线?这可能意味着你的createPathToMove()函数会变得有些复杂,但你可以使用fillColor而不是strokeColor,并且不会出现那些伪像。 - Good Doug
1个回答

4

尽管这篇文章有点旧,但我认为我可以回答它,以防其他人遇到同样的问题。

基本上,要消除线条中的伪影,您需要将线条宽度设置为小于2.0的尺寸(由于某种原因,当它小于此值时不会出现伪影)。设置线条宽度后,您需要按以下方式缩放SKNode:

node.xScale = 10
node.yScale = 10

这将使得线条看起来比实际粗很多,而且线条上没有任何伪影。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接