我有一个使用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是我最好的选择吗?
答案 0 :(得分:4)
虽然这篇文章有点陈旧,但我想我也可以自己回答,因为其他人也有同样的问题。
基本上,要删除行中的工件,您需要将行宽设置为小于2.0的大小(无论出于何种原因,当它小于此值时不会发生伪像)。设置线宽后,您需要像这样放大SKNode:
node.xScale = 10
node.yScale = 10
然后,这将使线显得比它显得更厚,并且线中没有伪影。
您可能还必须将antialiased属性设置为false,否则该行将显得非常模糊。