我已经按照教程制作了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
,但是在分配给只读属性时出错了。有什么建议我可以做些什么来防止物体飞过一切?
答案 0 :(得分:0)
您可以将一个physicsBody添加到限制您的鸟类离开视口的场景中:
//In the scene:
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]
您需要添加相应的类别/联系人位掩码,但似乎您可以处理它。