如何创建一个圆周,只是轮廓的SKSpriteNode?
How to create a SKSpriteNode that is the circumference of a circle, just the outline?
我想创建一个如上所述的 SKSpriteNode
。我试过 UIBezierPath
,但 XCode 无法识别创建该类型对象的函数。我想我可能需要 import
一些东西,但我不确定是什么。
当我执行以下操作时,
出现错误:Missing argument in call: center
但是,一旦我添加了适当的参数,
我得到了错误:Extra argument 'edgeLoopFromPath' in call
。
我的代码如下:
let circlePath: UIBezierPath = UIBezierPath(arcCenter: CGPointMake(self.frame.midX, self.frame.midY), radius: self.frame.height / 2, startAngle: 0, endAngle: 360, clockwise: true)
let confinCircle: SKPhysicsBody = SKPhysicsBody(center: CGPointMake(self.frame.midX, self.frame.midY), edgeLoopFromPath: circlePath)
我觉得你在使用路径之类的东西让事情变得困难。你想要一个只有一条线的圆,里面没有颜色。
试试这个:
let circle = SKShapeNode(circleOfRadius: 10)
circle.physicsBody = SKPhysicsBody(circleOfRadius: 10)
circle.fillColor = SKColor.clearColor()
circle.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(circle)
这是我的解决方案:
let circlePath: UIBezierPath = UIBezierPath(arcCenter: CGPointMake(self.frame.midX, self.frame.midY), radius: self.frame.height / 2, startAngle: 0, endAngle: 360, clockwise: true)
confiningCircle.physicsBody = SKPhysicsBody(edgeChainFromPath: circlePath.CGPath)
self.addChild(confiningCircle)
有趣的是,参数名称 "edgeChainFromPath" 与参数名称 Apple lists on their official class reference 不同:
在网站上,他们称之为 bodyWithEdgeChainFromPath
,这与上面的工作代码不同。
我想创建一个如上所述的 SKSpriteNode
。我试过 UIBezierPath
,但 XCode 无法识别创建该类型对象的函数。我想我可能需要 import
一些东西,但我不确定是什么。
当我执行以下操作时,
出现错误:Missing argument in call: center
但是,一旦我添加了适当的参数,
我得到了错误:Extra argument 'edgeLoopFromPath' in call
。
我的代码如下:
let circlePath: UIBezierPath = UIBezierPath(arcCenter: CGPointMake(self.frame.midX, self.frame.midY), radius: self.frame.height / 2, startAngle: 0, endAngle: 360, clockwise: true)
let confinCircle: SKPhysicsBody = SKPhysicsBody(center: CGPointMake(self.frame.midX, self.frame.midY), edgeLoopFromPath: circlePath)
我觉得你在使用路径之类的东西让事情变得困难。你想要一个只有一条线的圆,里面没有颜色。
试试这个:
let circle = SKShapeNode(circleOfRadius: 10)
circle.physicsBody = SKPhysicsBody(circleOfRadius: 10)
circle.fillColor = SKColor.clearColor()
circle.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(circle)
这是我的解决方案:
let circlePath: UIBezierPath = UIBezierPath(arcCenter: CGPointMake(self.frame.midX, self.frame.midY), radius: self.frame.height / 2, startAngle: 0, endAngle: 360, clockwise: true)
confiningCircle.physicsBody = SKPhysicsBody(edgeChainFromPath: circlePath.CGPath)
self.addChild(confiningCircle)
有趣的是,参数名称 "edgeChainFromPath" 与参数名称 Apple lists on their official class reference 不同:
在网站上,他们称之为 bodyWithEdgeChainFromPath
,这与上面的工作代码不同。