Насколько я знаю, по умолчанию для физических тел следует отскакивать друг от друга, когда они попадают друг в друга, пока вы не установите их collisionBitMask равным числом.
Тем не менее, у меня возникла огромная проблема с тем, что кажется, что это должно быть очень просто из-за столкновенияBitmasks, которое я считаю.
let RedBallCategory : UInt32 = 0x1 << 1
let GreenBallCategory: UInt32 = 0x1 << 2
let RedBarCategory : UInt32 = 0x1 << 3
let GreenBarCategory : UInt32 = 0x1 << 4
let WallCategory : UInt32 = 0x1 << 5
greenBall.physicsBody?.categoryBitMask = GreenBallCategory
greenBall.physicsBody?.contactTestBitMask = RedBarCategory
greenBall.physicsBody?.collisionBitMask = GreenHealthCategory
redBall.physicsBody?.categoryBitMask = RedBallCategory
redBall.physicsBody?.contactTestBitMask = GreenBarCategory
redBall.physicsBody?.collisionBitMask = RedHealthCategory
let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
self.physicsBody = borderBody
self.physicsBody?.friction = 0
borderBody.contactTestBitMask = RedBallCategory | GreenBallCategory
borderBody.categoryBitMask = WallCategory
Итак, у меня есть мои 2 мяча и мое пограничное тело. Я могу получить обнаружение столкновения, которое я хочу, но когда я добавляю битовую маску категории пограничного тела, он позволяет шарам как проходить, так и выключать экран, который я не хочу.
Я также хочу, чтобы мячи отскакивали друг от друга, но только когда я прокомментирую одну из мячей categoryBitMasks, они отскакивают. В противном случае они проходят друг к другу.
Это не имеет никакого смысла для меня, потому что у каждого из этих предметов есть другая collisionbitmask. У меня также было это иногда, когда установка всех чисел, равных 5, позволяла бы всем проходить друг через друга, но тогда установка всего на 6 позволила бы всем ударить друг друга.
Как точно работают битмаксы столкновений и есть ли способ управлять множеством перекрещивающихся правил столкновений?