我試圖模擬一個緩慢的爆炸,所以我想要一個成長的東西。Sprite Kit生長物理體
是否存在的擊中格增長到設定值的方式,或者說我必須手動調整物理身體?
目前我這樣設置擊中格的大小:
self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:_radius];
但我想物理身體從沒有一個固定的時間間隔內成長爲全尺寸(即1秒)。
我試圖模擬一個緩慢的爆炸,所以我想要一個成長的東西。Sprite Kit生長物理體
是否存在的擊中格增長到設定值的方式,或者說我必須手動調整物理身體?
目前我這樣設置擊中格的大小:
self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:_radius];
但我想物理身體從沒有一個固定的時間間隔內成長爲全尺寸(即1秒)。
不支持調整物理體的大小。你只能創建一個尺寸稍大的新身體幾幀。然而,這不是完全有效的。
由於這是一個圓的身體,你可以使用常規的三角學做手工命中測試。測試每個潛在的接觸候選人距離爆炸中心的距離。
增加一個節點的XScale和yScale似乎相應地修改其physicsBody的大小。
然而,由於這種縮放導致任何衝突得不到相應的衝動 - 沒有「縮放」速度「轉移」由「爆炸」摸了屍體。爆炸物會將身體推開,但一旦停止變化,接觸到的身體將沒有額外的速度。這可能是也可能不是你想要的。
爲了擴大這一點,你可以修改collisionBitMasks和contactBitMasks所以爆炸纔會觸發接觸事件,而不是衝突解決。然後,使用didBeginContact()來確定碰撞發生的時間和位置,並根據需要對接觸身體施加衝動。
退一步講,一個SKFieldNode(radialGravityField)可能提供另一種方法都在一起。