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,否则线条会显得很模糊。
我有一个用 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,否则线条会显得很模糊。