Как работает collisionBitMask? Swift / SpriteKit

Насколько мне известно, по умолчанию для физических тел отскакивают друг от друга, когда они ударяются друг о друга, пока вы не установите их collisionBitMask равным числу.

Тем не менее, у меня есть огромная проблема, связанная с выполнением того, что, кажется, должно быть очень простым из-за коллизий, я верю, битмасками.

    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 моих шара и мое граничное тело. Я могу получить обнаружение столкновений, которое мне нужно, но когда я добавляю битовую маску категории тела границы, это позволяет шарам как проходить, так и выходить из экрана, чего я не хочу.

Я также хочу, чтобы шары отскакивали друг от друга, но только когда я закомментирую одну из битовых масок категории, они отскакивают. В противном случае они проходят друг через друга.

Это абсолютно бессмысленно для меня, потому что каждый из этих предметов имеет свою собственную коллизионную маску. У меня также было иногда, когда установка всех чисел, равных 5, позволяла бы всему проходить друг через друга, но затем установка всего 6, чтобы все сталкивались друг с другом.

Как именно работают битовые маски коллизий и существует ли правильный способ управления множеством перекрестных правил коллизий?

Ответы на вопрос(1)

Ваш ответ на вопрос