将SKSpriteNode限制为手机屏幕

时间:2014-11-16 01:40:33

标签: ios sprite-kit skspritenode

我已经按照教程制作了Flappy Bird Style滚动条。教程没有涉及的一件事是如何防止用户飞越屏幕,越过所有管道的顶部。在评论中,这是提出来的,但没有具体分享如何解决这个问题。一个人说只是将鸟限制在自我框架内#34;我不确定该怎么做。以下是初始化“鸟”的代码。

- (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 个答案:

答案 0 :(得分:0)

您可以将一个physicsBody添加到限制您的鸟类离开视口的场景中:

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

您需要添加相应的类别/联系人位掩码,但似乎您可以处理它。