В моей игре, когда игра начинается, некоторые узлы уже находятся в контакте, но я не нахожу, как обнаружить эти контакты. Мне удается обнаружить контакты, которые происходят, когда узлы движутся и соприкасаются во время игры, используя функцию didBeginContact.SpriteKit/Swift - Как проверить контакт двух узлов, когда они уже находятся в контакте
У кого-нибудь есть идеи, как обнаружить эти контакты?
Вот мой didBeginContact, если это необходимо:
func didBeginContact(contact: SKPhysicsContact) {
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
if contact.bodyA.categoryBitMask == contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
contactsList.append([firstBody.node!,secondBody.node!])
}
}
хороший вопрос, думаю, спрайт узлы, начиная игру, касаясь не работает с didBeginContact. Я думаю, что ваш единственный вариант - это didEndContact, но это не похоже на то, что вы хотите. – Steve
Тестировали ли вы, если didBeginContact вызывается для 2 тел, уже трогающих? Логично, я бы подумал, что в течение самого первого прохода над сценой, если физический движок обнаружит, что 2 физических тела перекрываются, он будет называть didBeginContact. Затем он добавит эти тела в список и не вызовет didBeginContact на следующем проходе, если они все еще касаются, но вызовите didEndContact, если они больше не касаются и не удаляют их из списка. –
Спасибо за ваши ответы, нет, к сожалению, не был вызванBeginContact. Я точно так же, как ты сказал! – Oscar