1

我正在尝试模拟一个缓慢的爆炸,所以我希望某些东西的命中框增长。

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

目前我这样设置hitbox的大小:

self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:_radius];

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

4

3 回答 3

2

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

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

于 2014-03-18T23:01:14.970 回答
0

再想一想,SKFieldNode (radialGravityField) 可能会同时提供另一种方法。

于 2015-04-21T16:56:31.793 回答
0

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

然而,由于这种缩放导致的任何碰撞都不会收到相应的脉冲——没有“缩放”速度“转移”到任何被“爆炸”触及的物体。炸药会将物体推开,但一旦它停止变化,接触的物体将没有额外的速度。这可能是也可能不是您想要的。

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

于 2015-04-21T16:53:00.100 回答