У меня есть 3 спрайта, которые могут сталкиваться друг с другом и имеют contactTestBitMask
и categoryBitMask
. У меня было два спрайта, которые использовали метод didBeginContact
, чтобы увидеть, столкнулись ли они, и он работал нормально, но теперь я не уверен, как установить его, чтобы проверять контакты нескольких объектов и запускать функцию, которая отличается в зависимости от того, какие два тела сталкиваются.Правильный способ использования didBeginContact в играх SpriteKit - Swift
Мои PhysicsCategory
:
struct PhysicsCategory {
static let None: UInt32 = 0
static let All: UInt32 = UInt32.max
static let Bird: UInt32 = 0b1
static let Cloud: UInt32 = 0b10
static let Desk: UInt32 = 0b100
static let Star: UInt32 = 0b101
static let StarSpecial: UInt32 = 0b110
}
didBeginContact
метод GameScene
:
func didBeginContact(contact: SKPhysicsContact) {
var BirdBody: SKPhysicsBody?
var DeskBody: SKPhysicsBody?
var SpecialStarBody: SKPhysicsBody?
//var SpecialStarBody: SKPhysicsBody
if contact.bodyA.categoryBitMask == PhysicsCategory.Bird {
BirdBody = contact.bodyA
DeskBody = contact.bodyB
} else if contact.bodyA.categoryBitMask == PhysicsCategory.Desk {
BirdBody = contact.bodyB
DeskBody = contact.bodyA
} else if contact.bodyA.categoryBitMask == PhysicsCategory.StarSpecial {
SpecialStarBody = contact.bodyA
}
if (DeskBody != nil) {
birdSprite.BirdDidCollideWithDesk(BirdBody?.node as! Bird, desk: DeskBody?.node as! Desk, scoreClass: scoreClass, scoreLabel: scoreLabel)
}
}
То, что я хочу сделать, это проверить, если птица соприкасался с письменным столом и в этом случае, он должен запустите функцию для птицы и стола, в противном случае я хочу посмотреть, была ли птица соприкасалась со специальным стилем, я не написал функцию для того, что делать в этом случае, но позже я бы назвал другую функцию для Это дело. Я также добавляю дополнительные спрайты, поэтому я был бы признателен, если бы кто-нибудь мог объяснить, как это сделать, чтобы код был хорошо написан и не вызывал никаких ошибок.
Спасибо, только что мне нужно! – Larisa