IOS7 рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ Flappy рдмрд░реНрдб рдЧреЗрдо рдХреНрд▓реЛрди рдмрдирд╛рдПрдВ

# рдлреЗрдкреНрд▓реЗрдмрд░реНрдб - рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИ!



рдпрд╣ рдЦрд┐рд▓реМрдирд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ 90 рдХреЗ рджрд╢рдХ рдХреЗ рдЦреЗрд▓ рдореЗрдВ рдордиреЛрд░рдВрдЬрди рдФрд░ рдЖрдХреНрд░реЛрд╢ рдХрд╛ рдПрдХ рдареЛрд╕ рдорд┐рд╢реНрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреИрд╕реЗ рдбрдмрд▓ рдбреНрд░реИрдЧрди 3, рдФрд░ рдХрд┐рд╢реЛрд░ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддреА рдирд┐рдВрдЬрд╛ рдХрдЫреБрдПред рджрд╛рдВрдЧ рдЧреБрдпреЗрди рдиреЗ рдШреЛрд╖рдгрд╛ рдХреА рдХрд┐ рд╡рд╣ рдЧреЗрдо рдХреЛ рдРрдк рд╕реНрдЯреЛрд░ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА рдХрд┐ рдирдП iOS7 рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреМрддрд┐рдХреА рдФрд░ рдмрд╛рддрдЪреАрдд рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рд▓реЗрдЦ рдЗрд╕рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ iOS 7 рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рднреМрддрд┐рдХреА рдЗрдВрдЬрди рд╣реИ - UIKit Dynamicsред

1. рдЭреВрд▓реЗ


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рддреАрди рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрдХ рдЯрдЪ рдЬреЗрд╕реНрдЪрд░ рдкрд╣рдЪрд╛рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapGesture:)]; [self.view addGestureRecognizer:singleTapGestureRecognizer]; [singleTapGestureRecognizer setNumberOfTapsRequired:1]; 

рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ "рдкрдХреНрд╖реА" рд▓рд╣рд░ рдмрдирд╛рдирд╛ рд╣реИред рдПрдХ рдирд┐рд░рдВрддрд░ рд╡реЗрдХреНрдЯрд░ flapUp (рдЕрдк) рдмрдирд╛рдПрдВ:

 flapUp = [[UIPushBehavior alloc] initWithItems:@[self.block] mode:UIPushBehaviorModeInstantaneous]; flapUp.pushDirection = CGVectorMake(0, -1.1); flapUp.active = NO; 


рдФрд░ рдЕрдВрдд рдореЗрдВ, "рдкрдХреНрд╖реА" рдореЗрдВ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдЬреЛрдбрд╝реЗрдВред

 gravity = [[UIGravityBehavior alloc] initWithItems:@[self.block]]; gravity.magnitude = 1.1; 

рдпрд╣ рд╣рдорд╛рд░рд╛ "рдкрдХреНрд╖реА" рдХреИрд╕реЗ рдЪрд▓реЗрдЧрд╛:



рдЪрд▓рддреА рд╣реБрдИ рдкрд╛рдЗрдкред


рдкрд╛рдЗрдк рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рд╕реЗ рд╣рдЯрд╛рдиреЗ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдмрд▓ X рдХреЗ рд╕рд╛рде рджрд╛рдИрдВ рдУрд░ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдкрд╛рдЗрдк рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдШрдирддреНрд╡ рджреЗрддреЗ рд╣реИрдВред

 pipesDynamicProperties= [[UIDynamicItemBehavior alloc] initWithItems:@[topPipe, bottomPipe]]; pipesDynamicProperties.allowsRotation = NO; pipesDynamicProperties.density = 1000; 

рдкрд╛рдЗрдк рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред

 movePipes = [[UIPushBehavior alloc] initWithItems:@[topPipe, bottomPipe] mode:UIPushBehaviorModeInstantaneous]; movePipes.pushDirection = CGVectorMake(-2800, 0); movePipes.active = YES; 

рдФрд░ рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:



рд╣рдо рдЯрдХрд░рд╛рд╡ рдореЗрдВ рдорд░ рдЬрд╛рддреЗ рд╣реИрдВ


рдЕрдВрддрд┐рдо рдЪрд░рдг рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рддреЗ рд╕рдордп рдиреБрдХрд╕рд╛рди рдХреЗ рдХреНрд╖рдг рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдмрд╛рдИрдВ рд╕реАрдорд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдПрдХ рдЯрдХреНрдХрд░ рдореЗрдВ, рдпрд╣ рдкрд╛рдЗрдк рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдирдП рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рднреА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

 blockCollision = [[UICollisionBehavior alloc] initWithItems:@[self.block]]; [blockCollision addBoundaryWithIdentifier:@"LEFT_WALL" fromPoint:CGPointMake(-1*PIPE_WIDTH, 0) toPoint:CGPointMake(-1*PIPE_WIDTH, self.view.bounds.size.height)]; blockCollision.collisionDelegate = self; 

"рдкрдХреНрд╖реА" рдФрд░ рдЬрдореАрди рдХреЗ рдмреАрдЪ рдЯрдХреНрдХрд░ рдЬреЛрдбрд╝реЗрдВред

 groundCollision = [[UICollisionBehavior alloc] initWithItems:@[self.block, self.ground]]; groundCollision.collisionDelegate = self; 

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдкрд╛рдЗрдк рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдкрд╛рдЗрдк рдФрд░ рдкрдХреНрд╖реА рдХреЗ рдмреАрдЪ рдПрдХ рдЯрдХрд░рд╛рд╡ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

 [blockCollision addItem:topPipe]; [blockCollision addItem:bottomPipe]; 

рдЪреВрдВрдХрд┐ рдкрд╛рдЗрдк рдФрд░ рдкреГрдереНрд╡реА рдПрдХ рдФрд░ self рдХреЗ рд╕рдорд╛рди рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИрдВ, "рдмрд░реНрдб" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ "рдЧреЗрдо рдУрд╡рд░" рдХрд╣рд▓рд╛рддрд╛ рд╣реИред рдЕрдм рдЯрдХрд░рд╛рд╡ рдкрдХреНрд╖реА рдФрд░ рдЬрдореАрди рдХреЗ рдмреАрдЪ, рд╕рд╛рде рд╣реА рдкрдХреНрд╖реА рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдкрд╛рдЗрдкреЛрдВ рдХреЗ рдмреАрдЪ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



рд╕реНрд░реЛрдд рдХреЛрдб GITHub рдкрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП MIT рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЬреЛ iOS7 рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдпрд╣рд╛рдВ рд╕реНрд░реЛрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: github.com/joeblau/FlappyBlock

Source: https://habr.com/ru/post/In212295/


All Articles