рдПрдХ рдлрд▓ рдирд┐рдВрдЬрд╛ рдХреНрд▓реЛрди рдЦреЗрд▓ рд▓реЗрдЦрди (рднрд╛рдЧ 1)

рдЫрд╡рд┐ рдПрд▓рди рдЯреИрди рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдорд╣рд╛рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ , рд╣рдо Cocos2D рдФрд░ Box2D рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд╛рдлрдмреНрд░рд┐рдХ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдлреНрд░реВрдЯ рдирд┐рдВрдЬрд╛ рдХреЗ рд╕рдорд╛рди рдЕрдкрдирд╛ рдЧреЗрдо рдмрдирд╛рдПрдВрдЧреЗред
рдРрд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЦреЗрд▓реЛрдВ рдореЗрдВ, рдЬрдм рдХреЛрдИ рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд┐рд╕реА рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рджреЛ рдкреВрд░реНрд╡-рддреИрдпрд╛рд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдХрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рд╡рд╕реНрддреБ рдХрд╛рдЯрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдо рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдлрд▓реЛрдВ рдХреЛ рдХрдИ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдХрд╛рдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдЙрдВрдЧрд▓реА рдХрд╣рд╛рдВ рдЧрдИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛!
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдЧрд╛рдЗрдб рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП Cocos2D рдФрд░ Box2D рдХреЗ рдЙрдиреНрдирдд рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднреА-рдЕрднреА iOS рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реБрд░реВ рдХреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо Cocos2D рдФрд░ Box2D рдХреЗ рдкрд░рд┐рдЪрдп рдкрд░ рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рдХреЗ рдКрдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдФрд░ рдпрд╣рд╛рдБ рдХреБрдЫ рд╢рд╛рдирджрд╛рд░ рдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ!



рд╕рднреА рдЗрдЪреНрдЫреБрдХ рдХреГрдкрдпрд╛ рдПрдХ рдХрдЯ рдХреЗ рд▓рд┐рдП рдкреВрдЫреЗрдВ! рдЪреЗрддрд╛рд╡рдиреА: рдЕрдиреБрд╡рд╛рджрд┐рдд рдкрд╛рда рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ!

рдиреЛрдЯ: рдлрд▓ рдкрд░ рдХрдЯ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рд░рдЦрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдлрд▓реЛрдВ рдХреЛ рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдХреБрдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ!
рдЖрдЬ рд╣рдо рдПрдХ рд╢рд╛рдВрдд рдХрд╛рдЯрдиреЗ рдкреНрд░рднрд╛рд╡, рдПрдХ рдХрдг рдкреНрд░рдгрд╛рд▓реА, рдЦреЗрд▓ рддрд░реНрдХ рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдлрд▓реЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╛рдЬрд╝ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рддреАрди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ:


рдкрд░реНрдпрд╛рдкреНрдд рд╢рдмреНрдж - рдЪрд▓реЛ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ!

рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░реЗрдВ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


рд╣рдо Cocos2D 2.X рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред рдЖрдк 2.X рдХреЗ рдмрдЬрд╛рдп Cocos2D 1.X рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрд╕реНрдХрд░рдг 1.X рдХреЗ рд╕рд╛рде, рдЖрдк Cocos2D 2.X рдХреЗ рд▓рд┐рдП PRKit рдФрд░ CCBlade рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:

cd ~/Downloads/cocos2d-iphone-2.0-beta ./install-templates.sh -f -u 

Xcode рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ Box2D рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ iOS \ cocos2d v2.x \ cocos2d iOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ CutCutCut рдирд╛рдо рджреЗрдВред
рдЕрдм рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:



рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
HelloWorldLayer.h рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рд╣рдЯрд╛рдПрдВ:

 CCTexture2D *spriteTexture_;// weak ref 

HelloWorldLayer.mm рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
 //       #import "PhysicsSprite.h" //   init   - (id)init { if( (self=[super init])) { // enable events self.isTouchEnabled = YES; self.isAccelerometerEnabled = YES; CGSize s = [CCDirector sharedDirector].winSize; //   [self initPhysics]; [self scheduleUpdate]; } return self; } //     - (void)createMenu { // } - (void)addNewSpriteAtPosition:(CGPoint)p methods { // } //     ccTouchesEnded [self addNewSpriteAtPosition: location]; 

рд╣рдордиреЗ HelloWorldLayer рд╕реЗ рд╕рднреА PhysicsSprite рд╕рдВрджрд░реНрдн рд╣рдЯрд╛ рджрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ, рд╣рдореЗрдВ рдХреБрдЫ рд╣рдж рддрдХ PhysicsSprite.mm рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб + рдЖрд░ рджрдмрд╛рдПрдВ, рдФрд░ рдЖрдкрдХреЛ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╣рд░реЗ рд░рдВрдЧ рдХреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрди рджреЗрдЦрдиреА рдЪрд╛рд╣рд┐рдП:



рд╢реЗрд╖ рдХреЛрдб рдбреАрдмрдЧрд┐рдВрдЧ рдореЛрдб рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ: рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рднреА Box2D рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╣рд░реЗ рд░рдВрдЧ рдХрд╛ рдлреНрд░реЗрдо рдЦреАрдВрдЪрддрд╛ рд╣реИред рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдпрд╣ рд╣рд░реА рд░реЗрдЦрд╛ рджреЗрдЦреЗрдВ? рдпреЗ initPhysics boilerplate рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рджреАрд╡рд╛рд░реЗрдВ рд╣реИрдВред
рд╢реЗрд╖ рдХреЛрдб рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВред рд╣рдо Box2D рджреБрдирд┐рдпрд╛ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рджреАрд╡рд╛рд░реЗрдВ (рдЧреНрд░реАрди рд▓рд╛рдЗрди) рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдбреАрдмрдЧ рдореЛрдб рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЖрджрд┐ред рдпрд╣ "рд▓рдЧрднрдЧ рдЦрд╛рд▓реА" рдкрд░рд┐рдпреЛрдЬрдирд╛ Box2D рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рд╕рдВрд╕рд╛рдзрди рдкреИрдХ


рдЕрдЧрд▓рд╛, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрднреА рддрдХ рдХреБрдЫ рднреА рди рдЬреЛрдбрд╝реЗрдВ; рдХреБрдЫ рдлрд╛рдЗрд▓реЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреИрдбреА рдХреЛ рд╕рдВрднрд╛рд▓ рдХрд░ рд░рдЦреЗрдВ - рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлрд╛рдЗрд▓ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


PRKit рдХреЗ рд╕рд╛рде рдмрдирд╛рд╡рдЯ рдмрд╣реБрднреБрдЬ рдмрдирд╛рдПрдВ


рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдореЗрдВ рдХрдЯреМрддреА рдХрд░рдирд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ CCSprite рдореЗрдВ рдПрдХ рдмрдирд╛рд╡рдЯ рдФрд░ рдПрдХ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд┐рддреНрд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдЬрд░реВрд░реА рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдкреНрд░рд┐рдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдХрд╛рд░ рдХреЛ рдЬрд╛рдиреЗрдВ, рдЬреЛ рдХрд┐ рдХрдЯрд╛ рд╣реБрдЖ, рдХрдЯрд╛ рд╣реБрдЖ рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдмрдирд╛рд╡рдЯ рдмрд╣реБрднреБрдЬ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ:


рди рддреЛ Cocos2D рдФрд░ рди рд╣реА Box2D рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, OpenGL рдореЗрдВ рдЕрдкрдирд╛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред
рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ?
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕рднреА рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреЗ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ Precognitive Research рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд Cocos2D рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдИ, рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕реЗ PRKit рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрдирд╛рд╡рдЯ рдмрд╣реБрднреБрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, PRKit рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рдЗрд╕реЗ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ PRKit рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ "рдЧрдВрддрд╡реНрдп рд╕рдореВрд╣ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдЗрдЯрдо рдХреЙрдкреА рдХрд░реЗрдВ" рдФрд░ "рдХрд┐рд╕реА рднреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдореВрд╣ рдмрдирд╛рдПрдВ" рдмреЙрдХреНрд╕ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ PRKit рдХреЛ Precognitive Research рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рд╕реЗрдЯ рдореЗрдВ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП PRKit рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:



рдЦреЗрд▓ рдХреЛ рдЪрд▓рд╛рдПрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реЗрдВрдЧреА:



рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ PRKit рдХреЛ Cocos2D 1.X рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ OpenGL ES 1.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╣рдо OpenGL ES 2.0 рдХреЗ рд╕рд╛рде Cocos2D 2.X рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИрдВред
рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, PRFilledPolygon.m рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ:

рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
 //    initWithPoints: andTexture: usingTriangulator: self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTexture]; //   calculateTextureCoordinates   - (void)calculateTextureCoordinates { for (int j = 0; j < areaTrianglePointCount; j++) { textureCoordinates[j] = ccpMult(areaTrianglePoints[j],1.0f/texture.pixelsWide*CC_CONTENT_SCALE_FACTOR()); textureCoordinates[j].y = 1 - textureCoordinates[j].y; } } //   draw   - (void)draw { CC_NODE_DRAW_SETUP(); ccGLBindTexture2D( self.texture.name ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); ccGLBlendFunc( blendFunc.src, blendFunc.dst); ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position | kCCVertexAttribFlag_TexCoords ); glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, areaTrianglePoints); glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, 0, textureCoordinates); glDrawArrays(GL_TRIANGLES, 0, areaTrianglePointCount); } 

рдЪрд▓рд┐рдП рд╕реНрдЯреЗрдк рдмрд╛рдп рд╕реНрдЯреЗрдк рдмрджрд▓рддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Cocos2D рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ CCNode рдореЗрдВ рдПрдХ OpenGL ES 2.0 рд╢реЗрдбрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред PRFilledPolygon рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд "рд╕реНрдерд┐рддрд┐ / рдмрдирд╛рд╡рдЯ" рд╢реЗрдбрд░ рдХреЛ рдкреЗрдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо init рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдмрд╣реБрднреБрдЬ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдмрдирд╛рд╡рдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ OpenGL ES 2.0 рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред рд╣рдордиреЗ Cocos2D 2.X рдХреЗ рд▓рд┐рдП CCSprite рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рднреА рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ:


рдпрджрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк iPhone рдХреЗ рд▓рд┐рдП OpenGL ES 2.0 рдкрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ Cocos2i 2 рдореЗрдВ рдХрд╕реНрдЯрдо рд╢реЗрдбреНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдо рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ Cocos2D 2.X:] рдореЗрдВ рд╣реА рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ PRKit рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджреВрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП!
PRKit рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рд╣рдо рдХреНрд▓рд╛рд╕ PRFilledPolygon рдХреЗ PolygonSprite рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рдлрд▓реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
PolygonSprite рдХреЛ PRFilledPolygon рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмреЙрдХреНрд╕ 2 рдбреА рдмреЙрдбреА рдХреЛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░, рдХреБрдЫ рдЕрдиреНрдп рдЪрд░ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВред рдХрдорд╛рдВрдб + рдПрди рджрдмрд╛рдПрдВ рдФрд░ iOS \ cocos2d v2.x \ CCNode рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред рдЗрд╕реЗ PRFilledPolygon рдХрд╛ рдЙрдкрд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ PolygonSprite.m рдирд╛рдо рджреЗрдВ ред
PolygonSprite.h рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
 //     #import "Box2D.h" #import "PRFilledPolygon.h" #define PTM_RATIO 32 //   @interface b2Body *_body; BOOL _original; b2Vec2 _centroid; //   @interface @property(nonatomic,assign)b2Body *body; @property(nonatomic,readwrite)BOOL original; @property(nonatomic,readwrite)b2Vec2 centroid; //   @end - (id)initWithTexture:(CCTexture2D*)texture body:(b2Body*)body original:(BOOL)original; - (id)initWithFile:(NSString*)filename body:(b2Body*)body original:(BOOL)original; + (id)spriteWithFile:(NSString*)filename body:(b2Body*)body original:(BOOL)original; + (id)spriteWithTexture:(CCTexture2D*)texture body:(b2Body*)body original:(BOOL)original; - (id)initWithWorld:(b2World*)world; + (id)spriteWithWorld:(b2World*)world; - (b2Body*)createBodyForWorld:(b2World*)world position:(b2Vec2)position rotation:(float)rotation vertices:(b2Vec2*)vertices vertexCount:(int32)count density:(float)density friction:(float)friction restitution:(float)restitution; - (void)activateCollisions; - (void)deactivateCollisions; 

рдпрд╣ рдХреЛрдб рдЖрдзрд╛рд░ рдЪрд░ рдФрд░ рддрд░реАрдХреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдмрд╣реБрднреБрдЬ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:


PolygonSprite.m рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ PolygonSprite.mm рдХрд░реЗрдВ ред рд╕рднреА рд╡рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА (рдХреЛрдХреЛрд╕ 2 рдбреА) рдФрд░ рд╕реА ++ (рдмреЙрдХреНрд╕ 2 рдбреА) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрдирдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ ".рдПрдордПрдо" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдЧрд▓рд╛, PolygonSprite.mm рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
 //   @implementation @synthesize body = _body; @synthesize original = _original; @synthesize centroid = _centroid; + (id)spriteWithFile:(NSString *)filename body:(b2Body *)body original:(BOOL)original { return [[[self alloc]initWithFile:filename body:body original:original] autorelease]; } + (id)spriteWithTexture:(CCTexture2D *)texture body:(b2Body *)body original:(BOOL)original { return [[[self alloc]initWithTexture:texture body:body original:original] autorelease]; } + (id)spriteWithWorld:(b2World *)world { return [[[self alloc]initWithWorld:world] autorelease]; } - (id)initWithFile:(NSString*)filename body:(b2Body*)body original:(BOOL)original { NSAssert(filename != nil, @"Invalid filename for sprite"); CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage: filename]; return [self initWithTexture:texture body:body original:original]; } - (id)initWithTexture:(CCTexture2D*)texture body:(b2Body*)body original:(BOOL)original { //      Box2D b2Fixture *originalFixture = body->GetFixtureList(); b2PolygonShape *shape = (b2PolygonShape*)originalFixture->GetShape(); int vertexCount = shape->GetVertexCount(); NSMutableArray *points = [NSMutableArray arrayWithCapacity:vertexCount]; for(int i = 0; i < vertexCount; i++) { CGPoint p = ccp(shape->GetVertex(i).x * PTM_RATIO, shape->GetVertex(i).y * PTM_RATIO); [points addObject:[NSValue valueWithCGPoint:p]]; } if ((self = [super initWithPoints:points andTexture:texture])) { _body = body; _body->SetUserData(self); _original = original; //    _centroid = self.body->GetLocalCenter(); //   (anchor point)    self.anchorPoint = ccp(_centroid.x * PTM_RATIO / texture.contentSize.width, _centroid.y * PTM_RATIO / texture.contentSize.height); //    ,    PolygonSprite } return self; } - (id)initWithWorld:(b2World *)world { //     return nil; } 

Cocos2D рдХреА рддрд░рд╣ рд╣реА, рд╕рднреА spriteWith * рддрд░реАрдХреЗ initWith * рдореЗрдердб рдХрдиреНрд╡рд░реНрдЯрд░ рдХреЗ рдСрдЯреЛрд░реЗрд▓рд┐рдЬ рд╣реИрдВред рдЕрдм рддрдХ, initWithWorld рдкрджреНрдзрддрд┐ рдХрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рд╣рдо рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
InitWithFile рдФрд░ initWithTexture рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдХрдИ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВред рдлрд▓ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдореНрди рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИ:




рдЕрднреА рднреА PolygonSprite.mm рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рдЬреЛрдбрд╝реЗрдВ:

рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
 - (void)setPosition:(CGPoint)position { [super setPosition:position]; _body->SetTransform(b2Vec2(position.x/PTM_RATIO,position.y/PTM_RATIO), _body->GetAngle()); } - (b2Body*)createBodyForWorld:(b2World *)world position:(b2Vec2)position rotation:(float)rotation vertices:(b2Vec2*)vertices vertexCount:(int32)count density:(float)density friction:(float)friction restitution:(float)restitution { b2BodyDef bodyDef; bodyDef.type = b2_dynamicBody; bodyDef.position = position; bodyDef.angle = rotation; b2Body *body = world->CreateBody(&bodyDef); b2FixtureDef fixtureDef; fixtureDef.density = density; fixtureDef.friction = friction; fixtureDef.restitution = restitution; fixtureDef.filter.categoryBits = 0; fixtureDef.filter.maskBits = 0; b2PolygonShape shape; shape.Set(vertices, count); fixtureDef.shape = &shape; body->CreateFixture(&fixtureDef); return body; } - (void)activateCollisions { b2Fixture *fixture = _body->GetFixtureList(); b2Filter filter = fixture->GetFilterData(); filter.categoryBits = 0x0001; filter.maskBits = 0x0001; fixture->SetFilterData(filter); } - (void)deactivateCollisions { b2Fixture *fixture = _body->GetFixtureList(); b2Filter filter = fixture->GetFilterData(); filter.categoryBits = 0; filter.maskBits = 0; fixture->SetFilterData(filter); } 

рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ setPosition рд╡рд┐рдзрд┐ рдХреЛ CCNode рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЬрдм рд╣рдо рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкреЛрдЬрд┐рд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рддреЛ Box2D рдХрд╛ рдмреЙрдбреА рднреА рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПред
рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рдмреЙрдХреНрд╕ 2 рдбреА рдмреЙрдбреА рдмрдирд╛рдиреЗ рдФрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХ рд╢рд░реАрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреА рд╡рд╕реНрддреБ, рдЖрдХреГрддрд┐ рдФрд░ рдмрдирд╛рд╡рдЯ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рддрдХ, рд╣рдо рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдШреЛрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреЗрд╡рд▓ рдЙрди рдЪреАрдЬрд╝реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рд╢реНрд░реЗрдгреАрдмрд┐рдЯреНрд╕ рдФрд░ рдорд╛рд╕реНрдХрдмрд┐рдЯреНрд╕ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдЯрдХрд░рд╛рд╡реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрджрд┐ рд╢реНрд░реЗрдгреА рдФрд░ рдореБрдЦреМрдЯрд╛ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдЯрдХрд░рд╛рд╡ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрди рдорд╛рдиреЛрдВ рдХреЛ 0 рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрд░рдВрдн рд╣реЛрддреЗ рд╣реА рд╣рдореЗрдВ рдЯрдХрд░рд╛рд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рджреЛ рддрд░реАрдХреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╢реНрд░реЗрдгреАрдмрд┐рдЯреНрд╕ рдФрд░ рдорд╛рд╕реНрдХрдмрд┐рдЯреНрд╕ рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╣рдо рдЬрдм рдЪрд╛рд╣реЗрдВ рддрдм рдЕрдкрдиреЗ рдмрд╣реБрднреБрдЬ рдХреЗ рдЯрдХрд░рд╛рд╡реЛрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рд╕рдХреЗрдВред
PolygonSprite.mm рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд▓рд╛рдпрдХ рдПрдХ рдФрд░ рдЪреАрдЬ рд╣реИ:

рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
 -(CGAffineTransform) nodeToParentTransform { b2Vec2 pos = _body->GetPosition(); float x = pos.x * PTM_RATIO; float y = pos.y * PTM_RATIO; if ( !isRelativeAnchorPoint_ ) { x += anchorPointInPoints_.x; y += anchorPointInPoints_.y; } //   float radians = _body->GetAngle(); float c = cosf(radians); float s = sinf(radians); if( ! CGPointEqualToPoint(anchorPointInPoints_, CGPointZero) ){ x += c*-anchorPointInPoints_.x+ -s*-anchorPointInPoints_.y; y += s*-anchorPointInPoints_.x+ c*-anchorPointInPoints_.y; } //   transform_ = CGAffineTransformMake( c, s, -s,c, x,y ); return transform_; } 

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ PhysicsSprite рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХреИрд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ? рдЦреИрд░, рдпрд╣рд╛рдБ рдпрд╣ рд╣реИред рдпрд╣рд╛рдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЬрд╛рдБрдЪ рдпрд╣ рд╣реИ рдХрд┐ рдмреЙрдХреНрд╕ 2 рдбреА рдлреЙрд░реНрдо рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдорд╛рди рд╣реИред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк PhysicsSprite.h рдФрд░ PhysicsSprite.mm рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реВрдиреНрдп рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЪрд▓рд╛рдПрдВ, рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП PolygonSprite рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред

рдлрд▓ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ


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


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЗрди рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдорд╛рд░реЗ рд╢рд░реАрд░ рдореЗрдВ рдХрдИ рд░реВрдк рд╣реИрдВред Box2D рдЕрд╡рддрд▓ рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рддреНрд░рд┐рдХреЛрдгреАрдп рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рддреНрд░рд┐рднреБрдЬреЛрдВ рд╕реЗ рдЕрд╡рддрд▓ рдЖрдХреГрддрд┐рдпрд╛рдБ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред
рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗ: рдПрдХ рд╢рд░реАрд░ - рдПрдХ рд░реВрдкред

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

рдПрдХ рдирдЬрд░ рдЗрди рджреЛ рдлрд▓реЛрдВ рдкрд░:



рдХреЗрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢реБрд░реВ рдореЗрдВ рдЕрд╡рддрд▓ рд╣реИред рддрд░рдмреВрдЬ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрддреНрддрд▓ рд╣реИ рдФрд░ рдмрд╣реБрдд рдмрд╛рд░реАрдХреА рд╕реЗ рдмрд╣реБрднреБрдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рджреЛрдиреЛрдВ рдлрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ 2 рдбреА рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрднреБрдЬ рдЖрдХреГрддрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдВрдд рдореЗрдВ рдЗрд╕ рдкрд░ рдЖрдПрдВрдЧреЗ:



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

рдкрд╣рд▓рд╛ рдлрд▓ рдмрдирд╛рдПрдВ


рдпрд╣ рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдлрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рддрд░рдмреВрдЬ (рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛)ред
PolygonSprite рд╡рд░реНрдЧ рдХреЗ рд╣рдорд╛рд░реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реБрдП, рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ initWithTexture Box2D рдХреА рдмреЙрдбреА рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рд╕реЗ рдПрдХ рдХрджрдо рдкрд╣рд▓реЗ, initWithFile рдореЗрдВ, рдЕрднреА рддрдХ рдХреЛрдИ рдмреЙрдбреА рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд▓ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдПрдХ рд╢рд░реАрд░ рдмрдирд╛рдиреЗ рдФрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ initWithWorld рдХрд╛ рдкрд╣рд▓рд╛ рдкрд╣рд▓рд╛ рдХрджрдо рд╣реЛрдЧрд╛, рдЬреЛ рд╢рд░реАрд░ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
Box2D рдмреЙрдбреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕ рдмрд╣реБрднреБрдЬ рдЖрдХрд╛рд░ рдХреЗ рдХреЛрдиреЗ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдо PhysicsEditor рдирд╛рдордХ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЙрдкрдХрд░рдг рдмрд╕ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рд╕реЗ рднрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдмрд╣реБрднреБрдЬ рдХреЗ рдХреЛрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ PhysicsEditor рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВред рдЖрдкрдХреЛ рддреАрди рдкреИрдирд▓реЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
PhysicsEditor рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред рдмрд╛рдИрдВ рдУрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдЪрд┐рддреНрд░ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдмреАрдЪ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрднреБрдЬ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рджрд╛рдИрдВ рдУрд░ рд╣рдо рд╢рд░реАрд░ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред



рддрд░рдмреВрдЬ рдХреЛ рдЦреАрдВрдЪреЗрдВред рд╕рдВрд╕рд╛рдзрди рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдмрд╛рдПрдБ рдлрд▓рдХ рдкрд░ рдЬрд╛рдПрдБред рдЕрдм рдЖрдкрдХреЛ рдХреЗрдВрджреНрд░ рдкреИрдирд▓ рдореЗрдВ рддрд░рдмреВрдЬ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд┐рдВрдбреЛ рдХреЗ рдиреАрдЪреЗ рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЛ рдЦреАрдВрдЪрдХрд░ рдЫрд╡рд┐ рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрддрд░ рддрдХ рдмрдврд╝рд╛рдПрдВред рдмрд╣реБрднреБрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреИрдирд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрд╣реБрднреБрдЬ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдмрд╣реБрднреБрдЬ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "рд╡рд░реНрдЯреЗрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ" рдЪреБрдиреЗрдВред рджреЛрд╣рд░рд╛рдПрдБ рдЬрдм рддрдХ рдЖрдк 5-8 рдХреЛрдиреЗ рд╣реИрдВред рддрд░рдмреВрдЬ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЪрдХреНрдХрд░ рд▓рдЧрд╛рдПрдВ рддрд╛рдХрд┐:


рдиреЛрдЯ: рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ PhysicsEditor рдореЗрдВ рдЬрд╛рджреВ рдХреА рдЫрдбрд╝реА рдЙрдкрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИред рдмрд╕ рдХреЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ 5-8 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЫрд╡рд┐рдпрд╛рдБ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╕рднреА рдлрд▓реЛрдВ рдФрд░ рдмрдо рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрднреБрдЬ рдЬреЛрдбрд╝реЗрдВред
рдЖрдкрдХреЛ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ:


рдЬрдм рдЖрдк рдКрдкрд░реА рджрд╛рд╣рд┐рдиреЗ рдХреЛрдиреЗ рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ "Box2D рдЬреЗрдиреЗрд░рд┐рдХ (PLIST)" рдореЗрдВ рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рдорд╛рди рдмрджрд▓реЗрдВ, рдФрд░ рдЖрдкрдХреЛ рдирд┐рдореНрди рдЬреИрд╕рд╛ рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:



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



рддрд░рдмреВрдЬ / рдлрд┐рдХреНрд╕реНрдЪрд░ / рдЖрдЗрдЯрдо 0 / рдмрд╣реБрднреБрдЬ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЖрдЗрдЯрдо 0 рдХрд╛ рдПрдХ рдФрд░ рдореВрд▓реНрдп рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдПрдХ рд╕рд░рдгреА рд╣реИред рдпрд╣ рд╕рд░рдгреА рд╣рдорд╛рд░рд╛ рд░реВрдк рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рдгреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░рдгреА рджреЗрдЦрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдЖрдЗрдЯрдо 0, рдЖрдЗрдЯрдо 1), рддреЛ рдЖрдкрдиреЗ 8 рд╕реЗ рдЕрдзрд┐рдХ рдХреЛрдиреЗ рдмрдирд╛рдП рд╣реИрдВ рдпрд╛ рдПрдХ рдЕрд╡рддрд▓ рдЖрдХреГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ PhysicsEditor рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ рдФрд░ рдЖрдХреГрддрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВред
рдЖрдЧреЗ, рд╕рд╛рдордЧреНрд░реА рдХреА рдЕрдВрддрд┐рдо рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЗрдЯрдо 0 рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВредрдпреЗ рдкреНрд░рд╛рд░реВрдк {x, y} рдореЗрдВ рд╣рдорд╛рд░реЗ рдХреЛрдиреЗ рдФрд░ рдЙрдирдХреЗ рдорд╛рди рд╣реИрдВред
рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрднреБрдЬ рдХреЗ рд▓рдВрдмрд╡рдд рдорд╛рди рд╣реИрдВ, рддреЛ рд╣рдо рддрд░рдмреВрдЬ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
Xcode рдореЗрдВ, iOS \ cocos2d v2.x \ CCNode рдХреНрд▓рд╛рд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред рдЗрд╕реЗ Poly PolySprite рдХреЛ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рддрд░рдмреВрдЬ рдХрд╛ рдирд╛рдо рджреЗрдВред рддрд░рдмреВрдЬ рдЦреЛрд▓реЗрдВред рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

 //     #import "PolygonSprite.h" 

рддрд░рдмреВрдЬ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ рддрд░рдмреВрдЬ рд░рдЦ рджреЗрдВред рдорд┐рдореА , рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд init рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:

рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
 //   @implementation - (id)initWithWorld:(b2World *)world { int32 count = 7; NSString *file = @"watermelon.png"; b2Vec2 vertices[] = { b2Vec2(5.0/PTM_RATIO,15.0/PTM_RATIO), b2Vec2(18.0/PTM_RATIO,7.0/PTM_RATIO), b2Vec2(32.0/PTM_RATIO,5.0/PTM_RATIO), b2Vec2(48.0/PTM_RATIO,7.0/PTM_RATIO), b2Vec2(60.0/PTM_RATIO,14.0/PTM_RATIO), b2Vec2(34.0/PTM_RATIO,59.0/PTM_RATIO), b2Vec2(28.0/PTM_RATIO,59.0/PTM_RATIO) }; CGSize screen = [[CCDirector sharedDirector] winSize]; b2Body *body = [self createBodyForWorld:world position:b2Vec2(screen.width/2/PTM_RATIO,screen.height/2/PTM_RATIO) rotation:0 vertices:vertices vertexCount:count density:5.0 friction:0.2 restitution:0.2]; if ((self = [super initWithFile:file body:body original:YES])) { //   -     } return self; } 

рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ рд╡рд░реНрдЯрд┐рдХрд▓ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 7)ред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрди рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдпреБрдХреНрдд рд╡рд░реНрдЯрд┐рдХрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдЕрднреА PLIST рдлрд╛рдЗрд▓ рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред рд╣рдо рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ PolygonSprite рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рдХрд╛рдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдереЛрдбрд╝рд╛ рдШрд░реНрд╖рдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдВрддрд╣реАрди рд░реВрдк рд╕реЗ рдФрд░ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рднреМрддрд┐рдХреА рди рдлрд┐рд╕рд▓реЗрдВ рддрд╛рдХрд┐ рдЯрдХрд░рд╛рд╡ рдХреЗ рджреМрд░рд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдВрдж рди рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдкреАрдЫреЗ рд╣рдЯрд╛ рджреЗрдВред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЪрд┐рддреНрд░ рдлрд╝рд╛рдЗрд▓, рдмреЙрдХреНрд╕ 2 рдбреА рдХреЗ рд╢рд░реАрд░ рдФрд░ рд░рд╛рдЬреНрдп - рдкреВрд░реЗ рдлрд▓ рдХрд╛ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рддрд░рдмреВрдЬ рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдкреИрдХ рд╕реЗ рд╕рднреА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдореЗрдВ, рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "CutCutCut рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ" рдЪреБрдиреЗрдВред рд╕рдВрд╕рд╛рдзрди рдкреИрдХреЗрдЬ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЫрд╡рд┐рдпрд╛рдБ рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ "рдЧрдВрддрд╡реНрдп рд╕рдореВрд╣ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдЗрдЯрдо рдХреЙрдкреА рдХрд░реЗрдВ" рдФрд░ "рдХрд┐рд╕реА рднреА рдЬреЛрдбрд╝реЗ рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ рдмрдирд╛рдПрдВ" рдмреЙрдХреНрд╕ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдЗрд╕рдореЗрдВ рдХреЗрд▓рд╛, рдЕрдирд╛рдирд╛рд╕, рд╕реНрдЯреНрд░реЙрдмреЗрд░реА рдФрд░ рдПрдХ рдмрдо рднреА рдорд┐рд▓рд╛рдПрдВред
рдЕрдм рддрдХ рд╣рдордиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдлрд▓ рдЬреЛрдбрд╝рд╛ рд╣реИред рд╕рдВрд╕рд╛рдзрди рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрдиреНрдп рдлрд▓реЛрдВ рдХреА рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдЦрддреЗ рд╕рдордп рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕ рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред

рдлрд▓ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬреЛрдбрд╝реЗрдВред


рдЕрдм рддрдХ, рд╕реНрдХреНрд░реАрди рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╣рд░ рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд▓ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ! :] HelloWorldLayer.h рдкрд░
рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

 //     #import "PolygonSprite.h" //   @interface CCArray *_cache; //   @interface @property(nonatomic,retain)CCArray *cache; 

HelloWorldLayer.mm рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
 //     #import "Watermelon.h" //   @implementation @synthesize cache = _cache; //    init,  [self initPhysics] [self initSprites]; //    dealloc,   [super dealloc] [_cache release]; _cache = nil; //  -  @implementation  @end - (void)initSprites { _cache = [[CCArray alloc] initWithCapacity:53]; //     .      . PolygonSprite *sprite = [[Watermelon alloc] initWithWorld:world]; [self addChild:sprite z:1]; [sprite activateCollisions]; [_cache addObject:sprite]; } 

рд╣рдо рдПрдХ рдХреИрд╢реЗ рдРрд░реЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╕рднреА рдлрд▓ рдФрд░ рдмрдо рд╣реЛрдВрдЧреЗред рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рддрд░рдмреВрдЬ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо activeteCollisions рдХрд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рддрд░рдмреВрдЬ рджреАрд╡рд╛рд░реЛрдВ рд╕реЗ рди рдЧреБрдЬрд░реЗрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЪрд▓рд╛рдПрдВ, рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рддрд░рдмреВрдЬ рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ рдиреАрдЪреЗ рдХреИрд╕реЗ рдЧрд┐рд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рдХреЗ рдиреАрдЪреЗ рднреВрдорд┐ рдкрд░ рд╣реЛрддрд╛ рд╣реИред



рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рддрд░рдмреВрдЬ рдмрд┐рд▓реНрдХреБрд▓ рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХреЗ рдмреЙрдХреНрд╕ 2 рдбреА рдмреЙрдбреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдмреЙрдбреА рдХреА рд╢реБрд░реБрдЖрдд рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдкрддрд▓рд╛ рд╕реНрдЯреНрд░реЛрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЛрдб рд╕рдХреНрд╖рдо рд╣реИред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рдФрд░ рдпрд╣рд╛рдВ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд╕рднреА рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ ред
рд╣рдордиреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ред рдЕрдм рддрдХ, рд╣рдордиреЗ рддрд░рдмреВрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЧреНрд░рд╛рдЙрдВрдб рдмрдирд╛рдпрд╛ рд╣реИ, рдЬреЛ рдиреАрдЪреЗ рдЧрд┐рд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдкрд╛рд░рджрд░реНрд╢реА рднрд╛рдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдмреЙрдХреНрд╕ 2 рдбреА рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдордиреЗ PRKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдмрдирд╛рд╡рдЯ рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдмреЙрдХреНрд╕ 2 рдбреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред рдЬрд▓реНрдж рд╣реА рдпрд╣ рд╣рдорд╛рд░реА рдмрд╣реБрдд рдорджрдж рдХрд░реЗрдЧрд╛!
рдЕрдм рд╣рдо рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ , рдЬрд╣рд╛рдБ рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдлрд▓реЛрдВ рдХреЛ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдЯреЗрдВ!

рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ

рдореИрдВ raywenderlich.com рд╕реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ ред
рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ iOS рдХреЗ рд▓рд┐рдП рд╕рднреА рдЧреЗрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ!
рдпрджрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧреЛрдВ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░реВрдВрдЧрд╛ред
рдкрд╛рдП рдЧрдП рд╕рднреА рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдФрд░ рдЯрд╛рдЗрдкреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХреГрдкрдпрд╛ рдЗрдмреНрд░рд╛рд╣реАрдо рдпрд╛ рдпрд╣рд╛рдБ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред
рдореБрдЭреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА!

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


All Articles