Я столкнулся с той же проблемой. В моем случае didBeginContact()
был вызван много раз (я подсчитал до 5 раз) за один контакт пули с противником. Поскольку пуля представляет собой простой формат круга, я согласен с @SFX, что это не может быть ошибкой только в Texture-Bodies. Тесты показали, что между вызовами didBeginContact()
не было вызова update()
. Итак, решение прост (Swift):
var updatesCalled = 0
...
internal update() {
updatesCalled ++
}
...
internal func didBeginContact(contact: SKPhysicsContact) {
NSLog("didBeginContact: (\(contact.contactPoint.x), \(contact.contactPoint.y)), \(updatesCalled)")
if(updatesCalled == 0) {return} // No real change since last call
updatesCalled = 0
... your code here ...
}
Я попробовал didEndContact()
, но это вообще не было вызвано. Я еще не исследовал это.
BTW: Я просто переключился с Android, и меня впечатлило легкость и стабильность этой системы: -)