【发布时间】:2015-05-14 15:08:39
【问题描述】:
我正在构建一个 SpriteKit “连锁反应”游戏,其中圆圈随着“爆炸”而变大。我正在使用 SKPhysicsBody(circleOfRadius:) 初始化程序为圆圈创建物理体。
不幸的是,这些物理实体似乎没有随着圆圈变大而重新调整大小,而且它们没有我可以设置的暴露的.radius 属性。有没有办法在 SpriteKit 中调整物理体的大小,或者我是否需要每帧创建一个新的物理体? (这是我在下面所做的,代码运行良好,但是在更新循环中创建新的物理体感觉效率很低。)
PS - 我知道对于圆圈,我可以使用 trig 轻松进行准确的碰撞检测以获取距离,但我想使用 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
}
}
}
【问题讨论】:
标签: ios swift sprite-kit skphysicsbody