Я ничего не нашел в Интернете о том, как это сделать. Я просто пытаюсь запустить строку кода, когда физическое тело коснется. В этом случае у меня есть SKSpriteNode с физическим телом, а другой для земли. Когда они прикасаются к ней, она должна запускать строку кода, это все, что я нашел до сих пор.Как обнаружить, когда два объекта касаются SpriteKit
let catGroup:UInt32 = 0x1 << 0
let groundGroup:UInt32 = 0x2 << 1
cat.physicsBody?.categoryBitMask = catGroup
cat.physicsBody?.contactTestBitMask = groundGroup
ground.physicsBody?.categoryBitMask = groundGroup
ground.physicsBody?.contactTestBitMask = catGroup
и вот где я запутался
func didBeginContact(contact: SKPhysicsContact) {
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask
{
firstBody = contact.bodyA
secondBody = contact.bodyB
}
else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if firstBody.categoryBitMask==0 && secondBody.categoryBitMask==1 {
print("contact")
}
}
так я должен заменять первый корпус и второй корпус с catGroup и groundGroup? Я не знаю, как это сделать.
Возможного дубликату [начинающий быстр набор спрайтов - помощь обнаружению столкновений узла (SKPhysicsContact)] (http://stackoverflow.com/questions/26270504/beginner-swift-sprite-kit -node-collision-detect-help-skphysicscontact) –
Установили ли вы класс, в котором у вас есть? BeginContact To Have to Physivs Обратитесь к протоколу Delegate, и вы задали свойство «delegate»? Сделав это, поместите в свой dudBeginContact отпечаток («Contact found»), чтобы узнать, вызвано ли его вызовом (или, точнее, установить точку останова). –
Вы не можете заменить firstBody и secondBody еще, поскольку вам нужно изучить их categoryBitMasks, чтобы узнать, что является кошкой, а какой является почвой. –