我试图模拟一个缓慢的爆炸,所以我想要一些东西的命中箱。
有没有办法将hitbox增加到设定值,还是我必须手动调整物理体的大小?
目前我设置了hitbox的大小:
self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:_radius];
但我希望物理体在固定的时间间隔(即1秒)内从无到有增长到全尺寸。
答案 0 :(得分:2)
不支持调整物理实体的大小。您只能为几个帧创建一个稍大一点的新主体。然而,这并不完全有效。
由于这是一个圆形体,您可以使用常规三角函数进行手动命中测试。测试每个潜在接触候选者与爆炸中心的距离。
答案 1 :(得分:0)
增加节点的xScale和yScale似乎相应地修改了其physicsBody的大小。
然而,由于这种缩放而导致的任何碰撞都没有得到相应的冲动 - 没有"缩放"速度到"转移"对于爆炸"触及的任何身体。爆炸物会将物体推开,但一旦它停止变化,接触的物体将没有额外的速度。这可能是也可能不是你想要的。
要对此进行扩展,您可以修改collisionBitMasks和contactBitMasks,这样爆炸只会触发联系事件而不会触发冲突。然后,使用didBeginContact()来识别碰撞发生的时间和地点,并根据需要对接触的身体施加冲动。
答案 2 :(得分:0)
第二个想法,SKFieldNode(radialGravityField)可能会提供一种替代方法。