Ограничить 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]
Вам нужно будет добавить соответствующие битовые маски категории / контакта, но, похоже, вы справитесь с этим.