调整使用 SKPhysicsBody(circleOfRadius:) 创建的 SpriteKit SKPhysicsBody 的大小

Resizing a SpriteKit SKPhysicsBody created with SKPhysicsBody(circleOfRadius:)

我正在构建一个 SpriteKit "chain reaction" 游戏,其中的圆圈会随着 "explode" 变大。我正在使用 SKPhysicsBody(circleOfRadius:) 初始化程序为圆圈创建物理体。

不幸的是,这些物理物体似乎不会随着圆圈变大而调整大小,而且它们没有我可以设置的外露 .radius 属性。有什么方法可以在 SpriteKit 中调整物理体的大小,还是我需要每帧都创建一个新的物理体? (这就是我在下面所做的,代码运行良好,但在更新循环中创建新的物理体感觉效率很低。)

PS - 我知道对于圆圈我可以使用三角函数轻松地进行准确的碰撞检测以获得距离,但我想使用 SpriteKit 碰撞检测来实现其他一些效果。

func moveCircles(dt:CGFloat){
   enumerateChildNodesWithName("circle") { node, stop in
     let c = node as! CircleSprite
     var halfWidth = c.size.width / 2.0
     c.update(dt) // in update() exploding circles get larger.
         if c.isExploding{
        // FIXME: Have to make a new physics body every update - I don't like this!
            c.physicsBody = SKPhysicsBody(circleOfRadius: halfWidth)
            c.physicsBody?.categoryBitMask = CollisionCategories.ExplodingCircle
            c.physicsBody?.contactTestBitMask = CollisionCategories.Circle
            c.physicsBody?.collisionBitMask = 0
            c.physicsBody?.dynamic = true // the default
        }
  }
}

您可能想要阅读更多内容 here。无法调整 physicsBody 的大小,建议您创建一个新的 physicsBody 并将其分配给节点。