Я создаю игру «цепной реакции» SpriteKit, где круги становятся больше, когда они «взрываются». Я использую инициализатор SKPhysicsBody(circleOfRadius:)
для создания физических тел для кругов.Изменение размера SpriteKit SKPhysicsBody, созданного с помощью SKPhysicsBody (circleOfRadius :)
К сожалению, эти физические тела, похоже, не изменяются по мере увеличения кругов, и у них нет открытого объекта .radius
, который я могу установить. Есть ли способ изменить размер физического тела в SpriteKit, или мне нужно создать новое физическое тело в каждом кадре? (Это то, что я сделал ниже, и код работает отлично, но он действительно неэффективен для создания новых физических тел в циклах обновления.)
PS - Я знаю с кругами. Я могу легко выполнить точное обнаружение столкновений с помощью триггера. на расстояниях, но я хотел использовать обнаружение столкновения 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
}
}
}
Вот что я подумал - мне было просто интересно, есть ли что-то в этом роде. Я не могу найти этот факт нигде в официальной документации Apple, кроме этого: «Очень мало характеристик физического тела фиксированы. Вне области физического тела большинство свойств можно изменить в любое время». , найденный в конце этого документа: https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html – tonethar
как невероятно глупо - вы не можете изменить радиус круговой коллайдер! – Fattie
@ Fattie на самом деле это имеет смысл! Изменение размера физического тела должно было бы изменить многие его свойства (масса/плотность/и т. Д.), Если бы не было слишком легко получить очень странные физические эффекты из-за физического изменения тела. –