У меня есть игра, в которой два шара должны проходить через третий объект, который функционирует как финишная черта.Два шара SKShapeNodes
, финишная линия - SKSpriteNode
.К каждому из них прикреплено SKPhysicBodys
с категориями, установленными следующим образом:
struct PhysicsCategory {
static let ball: UInt32 = 0x1 << 1
static let line: UInt32 = 0x1 << 2
}
ball.physicsBody = SKPhysicsBody(circleOfRadius: ballSize)
ball.physicsBody?.categoryBitMask = PhysicsCategory.ball
ball.physicsBody?.contactTestBitMask = PhysicsCategory.line
ball.physicsBody!.collisionBitMask = 1
line.physicsBody = SKPhysicsBody(rectangleOf: line.size)
line.physicsBody?.isDynamic = false
line.physicsBody?.categoryBitMask = PhysicsCategory.line
line.physicsBody?.contactTestBitMask = PhysicsCategory.ball
line.physicsBody!.collisionBitMask = 1
Поскольку я хочу, чтобы шары могли пересекать финишную черту без столкновения, и при этом иметь возможность получать уведомления об этомЯ установил collisionBitMask
для шариков и линии на одно и то же значение.
Это дает мне результат, который я ищу.Однако, как представляется, побочным эффектом является то, что оба шара могут проходить друг через друга, что не должно происходить.
Кроме того, если я установлю значение collisionBitMask
на что-либокроме 1, шарики и шишка друг от друга.Я прочитал документацию Apple по этому вопросу, но мне кажется, что я что-то здесь неправильно понял / пропустил.
Я предполагаю, что, поскольку оба шара видят друг друга как имеющие один и тот же collisionBitMask
.Ожидается совпадение.Чего я не понимаю, так это как я могу избежать этого, не добавляя отдельную категорию на шар.
Может ли кто-нибудь указать мне правильное направление?Как сделать так, чтобы шары проходили через финишную черту, не перекрывая друг друга?