Физика не обнаруживает столкновение

Я просто поместил узел квадратной формы на сцену и сделал физическое тело сцены краем экрана. Я включил просмотр физики, чтобы вы могли видеть все, что связано с физикой. Квадрат имеет физическое тело вокруг него, как и граница сцены. Однако, когда квадрат упирается в границу, ничего не происходит. Площадь просто проходит насквозь. Вот как я инициализирую квадрат:

let rect1 = CGRect(x: 100, y: 100, width: 50, height: 50)
        let square = Square(rect: rect1)
        square.fillColor = UIColor.blackColor()
        square.zPosition = 200
        square.physicsBody = SKPhysicsBody(edgeLoopFromRect: rect1)
        square.physicsBody?.allowsRotation = false
        square.physicsBody?.affectedByGravity = false
        square.physicsBody?.restitution = 0.4
        self.addChild(square)

Вот как я инициализирую физическое тело для сцены:

let physicsBody = SKPhysicsBody(edgeLoopFromRect: view.bounds)
self.physicsBody = physicsBody

Очень похожий код работал у меня в других играх, поэтому я не уверен, почему не происходит столкновений. Любая помощь очень ценится спасибо!


person Kendel    schedule 24.01.2015    source источник
comment
Убедитесь, что CollisionBitMask для каждого из тел одинаков (а не равен 0). Когда вы назначаете физику сцены, попробуйте сделать self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)   -  person    schedule 24.01.2015
comment
Спасибо за предложения. Однако ни один из них не работал. Я напечатал два значения CollisionBitMask, и вот что они собой представляют: Optional(2) Optional(4294967295)   -  person Kendel    schedule 24.01.2015
comment
Вы перемещаете квадрат с помощью физики или SKActions или вручную?   -  person    schedule 24.01.2015
comment
О, спасибо большое, это проблема! Я использовал джойстик и просто устанавливал его положение, а не использовал импульс. Я изменил его на импульс, и теперь он работает нормально. Благодарю вас!   -  person Kendel    schedule 24.01.2015


Ответы (1)


Движение шаров должно быть вызвано физикой, а не просто установкой положения. Проблема была устранена за счет использования импульсов для перемещения шаров, которые затем заставляли их сталкиваться с различными объектами.

person Kendel    schedule 01.02.2015