Сначала я добавил
skView.showsPhysics = YES;
Чтобы увидеть схему физического тела.
НО
У меня проблема с потерей физического эффекта О_о... У меня есть шарик, на который действует гравитация и он падает.
// Ball
self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.size.height/2];
self.physicsBody.categoryBitMask = ballCategory;
self.physicsBody.contactTestBitMask = bottomCategory;
Также я создал физическое тело с нижним краем, чтобы получать сообщения о столкновениях:
// Bottom edge
CGRect bottomRect = CGRectMake(self.frame.origin.x, self.frame.origin.y + 25, self.frame.size.width, 10);
SKNode* bottom = [SKNode node];
bottom.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:bottomRect];
[self addChild:bottom];
которые корректно взаимодействовали друг с другом до того, как я добавил битовую маску к нижнему краю
bottom.physicsBody.categoryBitMask = bottomCategory;
bottom.physicsBody.collisionBitMask = ballCategory;
Маски:
static const uint32_t ballCategory = 0x1 << 0; // 00000000000000000000000000000001
static const uint32_t bottomCategory = 0x1 << 1; // 00000000000000000000000000000010
Оно остановило работу. Хм...
Я закомментировал назначение маски нижнему краю - это работает. Потом привязал к нижнему краю другую - шаровую маску - опять не работает.
Наверное, я что-то упустил в документации, но теперь не могу найти ответ, почему это происходит.