使用带有UIBezierpath的SKShapeNode无冲突检测

时间:2014-11-24 22:12:19

标签: swift sprite-kit collision-detection uibezierpath skphysicsbody

我有以下UIBezierPath,它就像一个圆圈,但有一个间隙: enter image description here

var centerPosition = CGPointMake(self.frame.width/2, self.frame.height/2)
var aPath:UIBezierPath = UIBezierPath(arcCenter: centerPosition, radius: 75, startAngle: 0, endAngle: degreesToRadians(size), clockwise: true)
gapeCircle = SKShapeNode(path: myPath, centered: true)

现在我想使用SKPhysicsBody,这样当一个物体与这个物体的轮廓碰撞时,就会有一个通知。但只有在那种情况下。如果对象"碰撞"在差距位置,不应该是通知。

但我无法找到如何解决这个问题。我已经尝试了多种不同的SKPhysicsBody-initializers。唯一有效的是circleOfRadius,但这并不像我希望它起作用那样,因为我只需要检查碰撞是否与一个物体碰撞"非间隙&#34 ;我圈子的一部分。

1 个答案:

答案 0 :(得分:0)

我怀疑它是因为你没有使用封闭的UIBezierPath。下面的代码将创建一条曲线,循环回自身,给出了' C'宽度仅为1 pt

var centerPosition = CGPointMake(self.frame.width/2, self.frame.height/2)
var aPath:UIBezierPath = UIBezierPath(arcCenter: centerPosition, radius: 75, startAngle: 0, endAngle: degreesToRadians(size), clockwise: true)
var aPath:UIBezierPath = UIBezierPath(arcCenter: centerPosition, radius: 74, startAngle: degreesToRadians(size), endAngle: 0, clockwise: false)
gapeCircle = SKShapeNode(path: myPath, centered: true)