یادگرفتن برنامه نویسی ios: طراحی بازی شبیه بازی انگری موفقیت (نصیب سوم) در دو نصیب پیشین یادگرفتن ایجاد بازی فلاپی موفقیت، فرایند متفاوت ایجاد بازی را توضیح دادیم در نصیب اولیه طریق ایجاد محیط فیزیکی، پرنده را آموختیم و در نصیب دوم نحوه حرکت دادن به پرنده و کدهای مرتبط با حرکت پرنده با زدن ضربه را نوشتیم در این نصیب که نصیب سوم و انتها این تیم میباشد موانعی را در بازی تولید می کنیم .
آخری عنصری که در بازی قرار می گیرد لوله می باشد که بصورت موانعی در صحنه بازی قرار داراهستند به نحوی که پرنده نباید با آنان واکنش کند و در صورت عکس العمل پرنده بازی ریستارت می شود . برای انجام اینکار دو تصویر گرافیکی pipe1 .png و pipe2 .png را به پروژه بیشتر می کنیم . از دیدگاه گرافیکی، لوله ها در فضای بازی عناصری یگانه می باشند چراکه اجزایی مثل زمین، اسمان و پرندگان در بازی ثابت و سوای تغییر و تحول میباشند ولی لوله ها متغیر میباشند، بدین ترتیب با توصیف دو عنصر گرافیکی pipe1 و pipe2 یک لوله از بالا کاغذ نمایش را توسعه می دهد و لوله دیگر از زیر ورقه نمایش .
لوله ها با دو متد با اسم SKSprintNode S تعریف گردیده اند و این دو متد را در متد خالی SKNode (بعنوان والد) قرار می دهیم .
تعیین فاصله دربین لوله ها می تواند دلخواه باشد که ما در اینجا این مسافت را 100 تعیین کردیم @implementation MyScene
static NSInteger const kVerticalPipeGap = 100;
-(id)initWithSize:(CGSize)size { لوله ها در بیرون از ورقه سناریو قرار می گیرند .
یک جفت از لوله ها در نصیب بیرونی سمت راست صفحه سناریو قرار میگیرند .فرمان zPosition به نحوی برای لوله ها گزینش گردیده میباشد که همیشه در پشت زمین بازی قرار گیرند .
// Create pipes
SKTexture* _pipeTexture1 = [SKTexture textureWithImageNamed:@\"Pipe1\"]; _pipeTexture1 .filteringMode = SKTextureFilteringNearest; SKTexture* _pipeTexture2 = [SKTexture textureWithImageNamed:@\"Pipe2\"]; _pipeTexture2 .filteringMode = SKTextureFilteringNearest;
SKNode* pipePair = [SKNode node]; pipePair .position = CGPointMake( self .frame .size .width + _pipeTexture1 .size .width * 2, 0 ); pipePair .zPosition = -10;
CGFloat y = arc4random() % (NSInteger)( self .frame .size .height / 3 );
SKSpriteNode* pipe1 = [SKSpriteNode spriteNodeWithTexture:_pipeTexture1]; [pipe1 setScale:2]; pipe1 .position = CGPointMake( 0, y ); pipe1 .physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:pipe1 .size];
pipe1 .physicsBody .dynamic = NO; [pipePair addChild:pipe1];
SKSpriteNode* pipe2 = [SKSpriteNode spriteNodeWithTexture:_pipeTexture2]; [pipe2 setScale:2]; pipe2 .position
[self addChild:pipePair];
پرنده با برخورد با لوله ها، با تکان کاغذ نمایش از کاغذ بیرون می شود .