Ограничить SKSpriteNode для экрана телефона

Я следовал руководству по созданию скроллера Flappy Bird Style. Учебное пособие не охватывало одну вещь: как удержать пользователя от полета над экраном, преодолевая верхушки всех труб. В комментариях это поднималось, но ничего конкретного не поделились о том, как это исправить. Один человек сказал просто "ограничить птицу до самого себя". Я точно не знаю, как это сделать. Вот код, инициализирующий "птицу".

- (void)initializeBird
{
    NSMutableArray *flappyBirdFrames = [NSMutableArray array];
    for (int i = 0; i < 3; i++)
    {
        NSString* textureName = nil;
        switch (i)
        {
            case 0:
            {
                textureName = @"Yellow_Bird_Wing_Up";
                break;
            }
            case 1:
            {
                textureName = @"Yellow_Bird_Wing_Straight";
                break;
            }
            case 2:
            {
                textureName = @"Yellow_Bird_Wing_Down";
                break;
            }
            default:
                break;
        }

        SKTexture* texture = [SKTexture textureWithImageNamed:textureName];
        [flappyBirdFrames addObject:texture];
    }
    [self setFlappyBirdFrames:flappyBirdFrames];

    self.flappyBird = [SKSpriteNode spriteNodeWithTexture:[_flappyBirdFrames objectAtIndex:1]];


    _flappyBird.physicsBody = [SKPhysicsBody bodyWithTexture:_flappyBird.texture size:_flappyBird.texture.size];

    //Category to which this object belongs to
    _flappyBird.physicsBody.categoryBitMask = flappyBirdCategory;

    //To notify intersection with objects
    _flappyBird.physicsBody.contactTestBitMask = pillerCategory | bottomBackgroundCategory;

    //To detect collision with category of objects
    _flappyBird.physicsBody.collisionBitMask = 0;

    [self addChild:self.flappyBird];

}

Я пытался положить в _flappyBird.frame = self.frame но он сделал ошибку при назначении свойства только для чтения. Любые предложения о том, что я могу сделать, чтобы не дать объекту пролететь над всем?

1 ответ

Вы можете добавить в сцену physBody, ограничивающую выход вашей птицы из области просмотра:

//In the scene:
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]

Вам нужно будет добавить соответствующие битовые маски категории / контакта, но, похоже, вы справитесь с этим.

Другие вопросы по тегам