Sprite Kit成长物理身体

时间:2014-03-18 20:24:33

标签: objective-c sprite-kit game-physics skphysicsbody

我试图模拟一个缓慢的爆炸,所以我想要一些东西的命中箱。

有没有办法将hitbox增加到设定值,还是我必须手动调整物理体的大小?

目前我设置了hitbox的大小:

self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:_radius];

但我希望物理体在固定的时间间隔(即1秒)内从无到有增长到全尺寸。

3 个答案:

答案 0 :(得分:2)

不支持调整物理实体的大小。您只能为几个帧创建一个稍大一点的新主体。然而,这并不完全有效。

由于这是一个圆形体,您可以使用常规三角函数进行手动命中测试。测试每个潜在接触候选者与爆炸中心的距离。

答案 1 :(得分:0)

增加节点的xScale和yScale似乎相应地修改了其physicsBody的大小。

然而,由于这种缩放而导致的任何碰撞都没有得到相应的冲动 - 没有"缩放"速度到"转移"对于爆炸"触及的任何身体。爆炸物会将物体推开,但一旦它停止变化,接触的物体将没有额外的速度。这可能是也可能不是你想要的。

要对此进行扩展,您可以修改collisionBitMasks和contactBitMasks,这样爆炸只会触发联系事件而不会触发冲突。然后,使用didBeginContact()来识别碰撞发生的时间和地点,并根据需要对接触的身体施加冲动。

答案 2 :(得分:0)

第二个想法,SKFieldNode(radialGravityField)可能会提供一种替代方法。