{"id":164599,"date":"2013-01-05T04:07:03","date_gmt":"2013-01-05T00:07:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=164599"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=164599","title":{"rendered":"<span class=\"post_title\">\u041f\u0438\u0448\u0435\u043c \u0438\u0433\u0440\u0443-\u043a\u043b\u043e\u043d Fruit Ninja (\u0447\u0430\u0441\u0442\u044c 1)<\/span>"},"content":{"rendered":"<div class=\"content html_format\">       <img decoding=\"async\" align=\"right\" src=\"http:\/\/habrastorage.org\/storage2\/8a8\/d75\/5e9\/8a8d755e998ec1c8779c7bb1dc55e896.png\" alt=\"image\"\/>\u0412 \u044d\u0442\u043e\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043e\u0442 <a href=\"http:\/\/www.raywenderlich.com\/about#allentan\">\u0410\u043b\u043b\u0430\u043d\u0430 \u0422\u0430\u043d\u0430<\/a> \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0438\u0433\u0440\u0443, \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043d\u0430 <a href=\"http:\/\/itunes.apple.com\/us\/app\/fruit-ninja\/id362949845?mt=8\">Fruit Ninja<\/a> \u043e\u0442 <a href=\"http:\/\/www.halfbrick.com\/\">Halfbrick Studios<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Cocos2D \u0438 Box2D.<br \/>  \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0438\u0433\u0440, \u043a\u043e\u0433\u0434\u0430 \u0438\u0433\u0440\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0437\u0430\u0435\u0442 \u0441\u043f\u0440\u0430\u0439\u0442, \u0442\u043e\u0442 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043f\u0440\u0430\u0439\u0442\u0430; \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u0430\u043a\u043e\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u0435\u0441\u0442\u0435 \u043c\u044b \u0440\u0430\u0437\u0440\u0443\u0431\u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442.<br \/>  \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0435\u0449\u044c \u043f\u043e\u043a\u0440\u0443\u0447\u0435. \u041d\u0430\u0448\u0438 \u0444\u0440\u0443\u043a\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0437\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432, \u0438 \u0440\u0435\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u043f\u0440\u043e\u0448\u0435\u043b \u043f\u0430\u043b\u0435\u0446 \u0438\u0433\u0440\u043e\u043a\u0430!<br \/>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043d\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 Cocos2D \u0438 Box2D. \u0415\u0441\u043b\u0438 \u0432\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 iOS, \u0442\u043e \u0432\u0430\u043c \u043b\u0443\u0447\u0448\u0435, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043f\u0440\u043e\u0431\u0435\u0436\u0442\u044c\u0441\u044f \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u043f\u043e <a href=\"http:\/\/www.raywenderlich.com\/352\/how-to-make-a-simple-iphone-game-with-cocos2d-tutorial\">\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u0432 Cocos2D<\/a> \u0438 <a href=\"http:\/\/www.raywenderlich.com\/457\/intro-to-box2d-with-cocos2d-tutorial-bouncing-balls\">\u0432 Box2D<\/a>.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0438 \u0432\u0438\u0434\u0435\u043e \u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0442\u044b\u0445 \u043f\u0440\u0438\u0435\u043c\u0447\u0438\u043a\u043e\u0432!<\/p>\n<p>  <iframe loading=\"lazy\" width=\"560\" height=\"349\" src=\"http:\/\/www.youtube.com\/embed\/BG4lqnFlXKk\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>  \u0412\u0441\u0435\u0445 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442! Warning: \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430!<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0440\u0430\u0437\u0440\u0435\u0437 \u043d\u0430 \u0444\u0440\u0443\u043a\u0442\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u0433\u0440\u043e\u043a \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u043f\u0430\u043b\u044c\u0446\u0435\u043c. \u0410 \u0442\u0430\u043a, \u043a\u0430\u043a \u0444\u0440\u0443\u043a\u0442\u044b \u0440\u0435\u0436\u0443\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043a\u0440\u043e\u0448\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u043a\u0443\u0441\u043e\u0447\u043a\u0438!<br \/>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u0440\u0443\u0442\u043e\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0440\u0430\u0437\u0440\u0435\u0437\u0430\u043d\u0438\u044f, \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0447\u0430\u0441\u0442\u0438\u0446, \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u0433\u0440\u044b \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0437\u0432\u0443\u043a \u0440\u0430\u0441\u0447\u043b\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0440\u0443\u043a\u0442\u043e\u0432.<\/p>\n<p>  \u042d\u0442\u043e\u0442 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e\u0434\u0435\u043b\u0435\u043d \u043d\u0430 \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u0443 \u0434\u043b\u044f \u0438\u0433\u0440\u044b \u0438 \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b.<\/li>\n<li>\u0412\u043e <a href=\"http:\/\/www.raywenderlich.com\/14393\/how-to-make-a-game-like-fruit-ninja-with-box2d-and-cocos2d-part-2\">\u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0440\u0443\u0431\u0438\u0442\u044c \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/li>\n<li>\u0412 <a href=\"http:\/\/www.raywenderlich.com\/14439\/how-to-make-a-game-like-fruit-ninja-with-box2d-and-cocos2d-part-3\">\u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0430\u043c \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0439 \u0438 \u0432\u0435\u0441\u0435\u043b\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0432 \u0438\u0433\u0440\u0443.<\/li>\n<\/ul>\n<p>  \u0425\u0432\u0430\u0442\u0438\u0442 \u0441\u043b\u043e\u0432 \u2014 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043a \u0434\u0435\u043b\u0443!<\/p>\n<h4>\u041d\u0430\u0447\u043d\u0435\u043c: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442<\/h4>\n<p>  \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Cocos2D 2.X, \u0442\u0430\u043a \u0447\u0442\u043e <a href=\"http:\/\/www.cocos2d-iphone.org\/download\">\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0435\u0433\u043e<\/a>, \u0435\u0441\u043b\u0438 \u0432\u044b \u0435\u0449\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Cocos2D 1.X, \u0432\u043c\u0435\u0441\u0442\u043e 2.X. \u0421 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 1.X \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0448\u0430\u0433 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PRKit \u0438 CCBlade \u0434\u043b\u044f Cocos2D 2.X, \u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432.<br \/>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:<\/p>\n<pre><code class=\"bash\">cd ~\/Downloads\/cocos2d-iphone-2.0-beta .\/install-templates.sh -f -u <\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Xcode \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 iOS\\cocos2d v2.x\\cocos2d iOS \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c Box2D, \u043d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e CutCutCut.<br \/>  \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/7a7\/e66\/4ce\/7a7e664ce4203fafb409f8e5a5e332e7.png\"\/><\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0439 \u0431\u0430\u0437\u044b.<br \/>  \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 <b>HelloWorldLayer.h<\/b> \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<pre><code class=\"objectivec\">CCTexture2D *spriteTexture_;\/\/ weak ref <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 <b>HelloWorldLayer.mm<\/b> \u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"objectivec\">\/\/ \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 #import &quot;PhysicsSprite.h&quot;   \/\/ \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 init \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c - (id)init {     if( (self=[super init])) {         \/\/ enable events         self.isTouchEnabled = YES;         self.isAccelerometerEnabled = YES;         CGSize s = [CCDirector sharedDirector].winSize;           \/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0444\u0438\u0437\u0438\u043a\u0443         [self initPhysics];           [self scheduleUpdate];     }     return self; }   \/\/ \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u044d\u0442\u0438 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 - (void)createMenu {     \/\/\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 } - (void)addNewSpriteAtPosition:(CGPoint)p methods {     \/\/\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 }   \/\/ \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0438\u0437 ccTouchesEnded [self addNewSpriteAtPosition: location]; <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041c\u044b \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u0432\u0441\u0435 \u043e\u0442\u0441\u044b\u043b\u043a\u0438 \u043a PhysicsSprite \u0438\u0437 HelloWorldLayer, \u043d\u043e \u0435\u0449\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041f\u043e\u0437\u0436\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0435-\u043a\u0443\u0434\u0430 \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 PhysicsSprite.mm, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0432\u0441\u0435, \u043a\u0430\u043a \u0435\u0441\u0442\u044c.<br \/>  \u041d\u0430\u0436\u043c\u0438\u0442\u0435 Command+R \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0435\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0441 \u0437\u0435\u043b\u0435\u043d\u043e\u0439 \u0440\u0430\u043c\u043a\u043e\u0439 \u0432\u043e\u043a\u0440\u0443\u0433:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/866\/3c3\/00f\/8663c300f2046b17ecbe1601cc68f3f2.png\"\/><\/p>\n<p>  \u041e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043a\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0434\u0435\u0431\u0430\u0433 \u0440\u0435\u0436\u0438\u043c: \u0440\u0438\u0441\u0443\u0435\u0442 \u0437\u0435\u043b\u0435\u043d\u0443\u044e \u0440\u0430\u043c\u043a\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Box2D \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u0412\u0438\u0434\u0438\u0442\u0435 \u044d\u0442\u0443 \u0437\u0435\u043b\u0435\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e \u0432\u043e\u043a\u0440\u0443\u0433 \u044d\u043a\u0440\u0430\u043d\u0430? \u042d\u0442\u043e \u0441\u0442\u0435\u043d\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c initPhysics.<br \/>  \u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043a\u043e\u0434, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435. \u041c\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043c\u0438\u0440 Box2D, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0435\u043d\u044b (\u0437\u0435\u043b\u0435\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438), \u0437\u0443\u043f\u0441\u043a\u0430\u0435\u043c \u0434\u0435\u0431\u0430\u0433 \u0440\u0435\u0436\u0438\u043c \u0438 \u0442.\u0434. \u042d\u0442\u043e\u0442 \u00ab\u043f\u043e\u0447\u0442\u0438 \u043f\u0443\u0441\u0442\u043e\u0439\u00bb \u043f\u0440\u043e\u0435\u043a\u0442 \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Box2D.<\/p>\n<h4>\u041f\u0430\u043a\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432<\/h4>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 <a href=\"http:\/\/cdn1.raywenderlich.com\/downloads\/CutCutCutResourceKit.zip\">\u043f\u0430\u043a\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432<\/a> \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b.<br \/>  \u041f\u043e\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442; \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432\u0430\u043c \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u043f\u0430\u043f\u043e\u0447\u043a\u0443 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u2014 \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442.<br \/>  \u0412 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ul>\n<li>\u0424\u043e\u043d\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0438\u0442\u043d\u043a\u0430; \u0444\u0440\u0443\u043a\u0442\u044b, \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0435 <a href=\"http:\/\/www.vickiwenderlich.com\/\">\u0412\u0438\u043a\u0438<\/a>; \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 Images<\/li>\n<li>\u0424\u043e\u043d\u043e\u0432\u0430\u044f \u043c\u0443\u0437\u044b\u043a\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"http:\/\/gomix.it\/\">gomix.it<\/a>, \u0432 \u043f\u0430\u043f\u043a\u0435 Sounds<\/li>\n<li>\u0417\u0432\u0443\u043a\u043e\u0432\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"http:\/\/www.bfxr.net\/\">bfxr<\/a> \u0438\u043b\u0438 \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0435 \u0441 <a href=\"http:\/\/www.freesound.org\/home\/\">freesound<\/a>, \u0432 \u043f\u0430\u043f\u043a\u0435 Sounds<\/li>\n<li>\u0412\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0447\u0430\u0441\u0442\u0438\u0446, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"http:\/\/particledesigner.71squared.com\/\">Particle Designer<\/a>, \u0432 \u043f\u0430\u043f\u043a\u0435 Particles<\/li>\n<li>\u0424\u0430\u0439\u043b PLIST, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438 \u043f\u043e\u043f\u043e\u0449\u0438 <a href=\"http:\/\/sites.fastspring.com\/codeandweb\/product\/all?source=raywenderlich\">PhysicsEditor<\/a>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u0444\u0440\u0443\u043a\u0442\u043e\u0432 \u0438 \u0431\u043e\u043c\u0431, \u0432 \u043f\u0430\u043f\u043a\u0435 Misc<\/li>\n<li>\u041a\u043b\u0430\u0441\u0441\u044b \u0444\u0440\u0443\u043a\u0442\u043e\u0432 \u0438 \u0431\u043e\u043c\u0431 \u0432 \u043f\u0430\u043f\u043a\u0435 Classes<\/li>\n<li>\u0412\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/github.com\/asinesio\/cocos2d-PRKit\">PRKit<\/a> \u0438 <a href=\"https:\/\/github.com\/hiepnd\/CCBlade\">CCBlade<\/a> \u0432 \u043f\u0430\u043f\u043a\u0435 Classes<\/li>\n<\/ul>\n<p>  <\/p>\n<h4>\u0420\u0438\u0441\u0443\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b \u0441 PRKit<\/h4>\n<p>  \u041d\u0430\u0448\u0430 \u0446\u0435\u043b\u044c \u044d\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439. \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 CCSprite \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0438 \u0440\u0430\u043c\u043a\u0443 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0439 (bounding box), \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0443\u044e \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u042d\u0442\u043e \u043d\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0440\u0430\u0439\u0442\u044b, \u043f\u043e\u0434\u0434\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430\u0440\u0435\u0437\u043a\u0435, \u0448\u0438\u043d\u043a\u043e\u0432\u043a\u0435 \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044e.<br \/>  \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435:<\/p>\n<ul>\n<li>\u0421\u043e\u0437\u0434\u0430\u044e\u0442 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u043c\/\u0444\u043e\u0440\u043c\u043e\u0439 \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439 (Texture Mapping)<\/li>\n<li>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0447\u0430\u0441\u0442\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u0440\u0430\u043c\u043a\u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 (Texture Filling)<\/li>\n<\/ul>\n<p>  \u041d\u0438 \u0432 Cocos2D, \u043d\u0438 \u0432 Box2D \u043d\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u041e\u0431\u044b\u0447\u043d\u043e, \u0432 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043d\u0430 OpenGL.<br \/>  \u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e?<br \/>  \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432\u0441\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0443\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0445\u043e\u0440\u043e\u0448\u0438\u043c\u0438 \u0440\u0435\u0431\u044f\u0442\u0430\u043c\u0438 \u0438\u0437 <a href=\"http:\/\/precognitiveresearch.com\/\">Precognitive Research<\/a>. \u041e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e Cocos2D \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0438 \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u0435\u0435 PRKit.<br \/>  \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\u043c\u0438, <a href=\"https:\/\/github.com\/asinesio\/cocos2d-PRKit\">\u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 PRKit<\/a>, \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 PRKit folder \u0432 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0443\u043d\u043a\u0442\u044b \u201cCopy items into destination group\u2019s folder\u201d \u0438 \u201cCreate groups for any added folders\u201d \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u0433\u0430\u043b\u043e\u0447\u043a\u043e\u0439.<br \/>  \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e PRKit \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f Precognitive Research, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u043d \u0447\u0430\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u043d\u0430\u0448 \u043d\u0430\u0431\u043e\u0440 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0432\u0435\u0440\u0441\u0438\u044e PRKit.<br \/>  \u041d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/55d\/709\/8ce\/55d7098ce463ef464225e397d9729440.png\"\/><\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0438\u0433\u0440\u0443, \u0432\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/236\/e66\/442\/236e66442b6a8c608faea753d266da84.png\"\/><\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e PRKit \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f Cocos2D 1.X, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 OpenGL ES 1.1, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Cocos2D 2.X \u0441 OpenGL ES 2.0. \u0410 \u043e\u043d\u0438 \u0432\u0435\u0441\u043e\u043c\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430.<br \/>  \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 PRFilledPolygon.m \u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"objectivec\">\/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434 initWithPoints: andTexture: usingTriangulator: self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTexture];   \/\/ \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 calculateTextureCoordinates \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 - (void)calculateTextureCoordinates {     for (int j = 0; j &lt; areaTrianglePointCount; j++) {         textureCoordinates[j] = ccpMult(areaTrianglePoints[j],1.0f\/texture.pixelsWide*CC_CONTENT_SCALE_FACTOR());         textureCoordinates[j].y = 1 - textureCoordinates[j].y;     } }   \/\/ \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 draw \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 - (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); } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c.<br \/>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 CCNode \u0432 Cocos2D \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u0443\u044e OpenGL ES 2.0 \u0448\u0435\u0439\u0434\u0435\u0440\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c PRFilledPolygon, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u201cPosition\/Texture\u201d \u0448\u0435\u0439\u0434\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 init.<br \/>  \u0414\u0430\u043b\u0435\u0435, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0435. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 calculateTextureCoordinates:<\/p>\n<ul>\n<li><b>\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440:<\/b> \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u043e\u043d \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0438\u0441\u043f\u043b\u0435\u0438 \u0442\u0438\u043f\u0430 Retina. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u043c texture.pixelsWide \u043d\u0430 CC_CONTENT_SCALE_FACTOR \u2013 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 Cocos2D \u0434\u043b\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0438 Retina-\u0434\u0438\u0441\u043f\u043b\u0435\u0435\u0432.<\/li>\n<li><b>\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Y:<\/b> \u041f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435, PRFIlledPolygon \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0432\u0432\u0435\u0440\u0445 \u043d\u043e\u0433\u0430\u043c\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 y.<\/li>\n<\/ul>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u043c\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438 \u043a\u043e\u0434 \u0434\u043b\u044f OpenGL ES 2.0. \u0422\u0430\u043a \u0436\u0435 \u043c\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u043f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u0432 CCSprite \u0434\u043b\u044f Cocos2D 2.X:<\/p>\n<ul>\n<li>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441 CC_NODE_DRAW_SETUP() \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438.<\/li>\n<li>\u0412\u044b\u0437\u043e\u0432\u044b glDisableClientState() \u0438 glEnableClientState() \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438 \u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/li>\n<li>\u041e\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 glVertexPointer() \u0438 glTexCoordPointer() \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0430 glVertexAttribPointer(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u0443\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c.<\/li>\n<li>\u0417\u0430\u043f\u0443\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 glTexEnvf(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 glTexParameteri().<\/li>\n<\/ul>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u044b \u043f\u043e <a href=\"http:\/\/www.raywenderlich.com\/3664\/opengl-es-2-0-for-iphone-tutorial\">OpenGL ES 2.0 \u0434\u043b\u044f iPhone<\/a> \u0438 <a href=\"http:\/\/www.raywenderlich.com\/10862\/how-to-create-cool-effects-with-custom-shaders-in-opengl-es-2-0-and-cocos2d-2-x\">\u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c \u0432 Cocos2D 2.X<\/a>. \u041d\u043e \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u043e\u0431\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0432\u043e\u043b\u043d\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u044b \u043d\u0430 Cocos2D 2.X :]<br \/>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442, \u0438 \u043e\u0448\u0438\u0431\u043a\u0438 PRKit \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442\u044c!<br \/>  \u041f\u043e\u0440\u0430 \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PRKit. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441 PolygonSprite \u043a\u043b\u0430\u0441\u0441\u0430 PRFilledPolygon, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0444\u0440\u0443\u043a\u0442\u044b.<br \/>  PolygonSprite \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 PRFilledPolygon \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0430 Box2D \u0432 \u0441\u043f\u0440\u0430\u0439\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e.<br \/>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 Command+N \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443 iOS\\cocos2d v2.x\\CCNode. \u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u043e\u043c PRFilledPolygon \u0438 \u043d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 <b>PolygonSprite.m<\/b>.<br \/>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043d\u0430 <b>PolygonSprite.h<\/b> \u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"objectivec\">\/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 #import &quot;Box2D.h&quot; #import &quot;PRFilledPolygon.h&quot; #define PTM_RATIO 32   \/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 @interface b2Body *_body; BOOL _original; b2Vec2 _centroid;   \/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u0441\u043b\u0435 @interface @property(nonatomic,assign)b2Body *body; @property(nonatomic,readwrite)BOOL original; @property(nonatomic,readwrite)b2Vec2 centroid;   \/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0435\u0440\u0435\u0434 @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; <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f PolygonSprite:<\/p>\n<ul>\n<li>body: \u042d\u0442\u043e \u0442\u0435\u043b\u043e Box2D, \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0435 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u043f\u0440\u0430\u0439\u0442\u0443. \u041e\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0444\u0438\u0437\u0438\u043a\u0438.<\/li>\n<li>original: \u0418 \u0446\u0435\u043b\u044b\u0435 \u0438 \u043f\u043e\u0440\u0435\u0437\u0430\u043d\u043d\u044b\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 PolygonSprite, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0438\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 YES, \u0442\u043e \u043a\u0443\u0441\u043e\u043a \u0446\u0435\u043b\u044b\u0439, \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0443\u0441\u043e\u043a \u0446\u0435\u043b\u043e\u0433\u043e.<\/li>\n<li>centroid: \u0426\u0435\u043d\u0442\u0440 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e.<\/li>\n<li>properties: \u0414\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0430\u0448\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c.<\/li>\n<li>init\/spriteWith*: \u041d\u0430\u0448\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.<\/li>\n<li>\u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b: \u042d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0442\u0435\u043b\u0430 Box2D \u0438 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0441 \u043d\u0438\u043c\u0438 \u0438 \u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438.<\/li>\n<li>PTM_RATIO: \u0421\u043e\u043e\u0442\u043d\u043e\u0441\u0438\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0438 \u043c\u0435\u0442\u0440\u044b. Box2D \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u0442\u0440\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.<\/li>\n<\/ul>\n<p>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043d\u0430 PolygonSprite.m \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u0432 <b>PolygonSprite.mm<\/b>. \u0412\u0441\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 Objective-C (Cocos2D), \u0438 C++ (Box2D) \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u201c.mm\u201d.<br \/>  \u0414\u0430\u043b\u0435\u0435, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 <b>PolygonSprite.mm<\/b>:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"objectivec\">\/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 @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, @&quot;Invalid filename for sprite&quot;);     CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage: filename];     return [self initWithTexture:texture body:body original:original]; }   - (id)initWithTexture:(CCTexture2D*)texture body:(b2Body*)body original:(BOOL)original {     \/\/ \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0438\u0437 \u0444\u043e\u0440\u043c\u044b Box2D     b2Fixture *originalFixture = body-&gt;GetFixtureList();     b2PolygonShape *shape = (b2PolygonShape*)originalFixture-&gt;GetShape();     int vertexCount = shape-&gt;GetVertexCount();     NSMutableArray *points = [NSMutableArray arrayWithCapacity:vertexCount];     for(int i = 0; i &lt; vertexCount; i++) {         CGPoint p = ccp(shape-&gt;GetVertex(i).x * PTM_RATIO, shape-&gt;GetVertex(i).y * PTM_RATIO);         [points addObject:[NSValue valueWithCGPoint:p]];     }       if ((self = [super initWithPoints:points andTexture:texture]))     {         _body = body;         _body-&gt;SetUserData(self);         _original = original;         \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0446\u0435\u043d\u0442\u0440 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430         _centroid = self.body-&gt;GetLocalCenter();         \/\/ \u0441\u0442\u0430\u0432\u0438\u043c \u044f\u043a\u043e\u0440\u044c (anchor point) \u043d\u0430 \u043c\u0435\u0441\u0442\u043e \u0446\u0435\u043d\u0442\u0440\u0430         self.anchorPoint = ccp(_centroid.x * PTM_RATIO \/ texture.contentSize.width,                                 _centroid.y * PTM_RATIO \/ texture.contentSize.height);         \/\/ \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043c PolygonSprite     }     return self; }   - (id)initWithWorld:(b2World *)world {     \/\/ \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0443\u0442 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c     return nil; } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u0440\u044f\u043c\u043e \u043a\u0430\u043a \u0432 Cocos2D, \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b spriteWith* \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e autorelease \u043a\u043e\u043d\u0442\u0435\u0440\u0447\u0430\u0441\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 initWith*. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0443 initWithWorld, \u043d\u043e \u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<br \/>  \u041c\u0435\u0442\u043e\u0434\u044b initWithFile \u0438 initWithTexture \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0440\u0443\u043a\u0442\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/ad3\/f82\/acf\/ad3f82acf81f7334e213d59dfea4c6cd.png\"\/><\/p>\n<ul>\n<li><b>initWithWorld:<\/b> \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u043f\u043e\u0437\u0436\u0435.<\/li>\n<li><b>initWithFile:<\/b> \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0435\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434 initWithTexture.<\/li>\n<li><b>initWithTexture: <\/b>\u041d\u0430\u0448 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. PRFilledPolygon \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430. \u0422\u0430\u043a, \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0448\u0430\u0433 \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443, \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438: \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0438\u0445 \u0432 \u043e\u0434\u043d\u043e Box2D \u0442\u0435\u043b\u043e. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u0445 \u0432 PRFillePolygon, \u043c\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u0440\u0430\u043d\u0435\u0435.<\/li>\n<li><b>initWithPoints:<\/b> \u0412\u0441\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434, \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 PRKit. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PRKit.<\/li>\n<\/ul>\n<p>  \u0412\u0441\u0435 \u0435\u0449\u0435 <b>PolygonSprite.mm<\/b> \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"objectivec\">- (void)setPosition:(CGPoint)position {     [super setPosition:position];     _body-&gt;SetTransform(b2Vec2(position.x\/PTM_RATIO,position.y\/PTM_RATIO), _body-&gt;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-&gt;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-&gt;CreateFixture(&fixtureDef);       return body; }   - (void)activateCollisions {     b2Fixture *fixture = _body-&gt;GetFixtureList();     b2Filter filter = fixture-&gt;GetFilterData();     filter.categoryBits = 0x0001;     filter.maskBits = 0x0001;     fixture-&gt;SetFilterData(filter); }   - (void)deactivateCollisions {     b2Fixture *fixture = _body-&gt;GetFixtureList();     b2Filter filter = fixture-&gt;GetFilterData();     filter.categoryBits = 0;     filter.maskBits = 0;     fixture-&gt;SetFilterData(filter); } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 setPosition \u0432 CCNode \u0442\u0430\u043a, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0441\u043f\u0440\u0430\u0439\u0442\u0430, \u0442\u0435\u043b\u043e Box2D \u0442\u043e\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f.<br \/>  \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0430 Box2D. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u043b\u043e, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442, \u0444\u043e\u0440\u043c\u0443 \u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443. \u041f\u043e\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043c\u044b \u043d\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u044f\u0435\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.<br \/>  \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u043d\u0430 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e categoryBits \u0438 maskBits. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438\u0445 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0442\u0430\u043a, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0438 \u043c\u0430\u0441\u043a\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442, \u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u041c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 0, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f.<br \/>  \u041f\u043e\u0441\u043b\u0435, \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 categoryBits \u0438 maskBits \u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 PolygonSprite \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0445\u043e\u0442\u0438\u043c.<br \/>  \u0415\u0441\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 <b>PolygonSprite.mm<\/b>:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"objectivec\">-(CGAffineTransform) nodeToParentTransform {     b2Vec2 pos  = _body-&gt;GetPosition();       float x = pos.x * PTM_RATIO;     float y = pos.y * PTM_RATIO;       if ( !isRelativeAnchorPoint_ ) {         x += anchorPointInPoints_.x;         y += anchorPointInPoints_.y;     }       \/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443     float radians = _body-&gt;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;     }       \/\/ \u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443     transform_ = CGAffineTransformMake( c,  s,                                        -s,c,                                        x,y );       return transform_; } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043a\u0430\u043a \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u043a\u043e\u0435-\u0447\u0442\u043e \u043e PhysicsSprite? \u0425\u043e\u0440\u043e\u0448\u043e, \u0432\u043e\u0442 \u0438 \u043e\u043d\u043e. \u0412\u0441\u0435, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f Box2D \u0444\u043e\u0440\u043c\u044b \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442.<br \/>  \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0432\u044b\u0448\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c PhysicsSprite.h \u0438 PhysicsSprite.mm \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0441\u0432\u0435\u043b\u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a \u043d\u0443\u043b\u044e.<br \/>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432\u0441\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u043a\u0430\u043a \u043f\u043e \u043c\u0430\u0441\u043b\u0443. \u041c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u0441 PolygonSprite \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e.<\/p>\n<h4>\u0420\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u043c \u0444\u0440\u0443\u043a\u0442\u044b<\/h4>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0444\u0440\u0443\u043a\u0442\u043e\u0432, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u0438\u0445 \u0444\u043e\u0440\u043c\u044b. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0434\u043e \u0444\u043e\u0440\u043c \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432, \u043d\u0430\u043c \u0442\u0430\u043a \u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f Box2D \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432. \u041d\u0443\u0436\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u0432\u0435 \u0432\u0435\u0449\u0438 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435:<\/p>\n<ul>\n<li>\u041f\u043e\u043b\u0438\u0433\u043e\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c <b>\u0432\u044b\u043f\u0443\u043a\u043b\u044b\u043c\u0438<\/b>, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0443\u0433\u043b\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 180 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432.<\/li>\n<li>\u0412 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\u0445 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 <b>8 \u0432\u0435\u0440\u0448\u0438\u043d<\/b>.<\/li>\n<\/ul>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432\u043d\u0435 \u044d\u0442\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0430\u0448\u0435 \u0442\u0435\u043b\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u043e\u0440\u043c. Box2D \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0432\u043f\u0443\u043a\u043b\u044b\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u043f\u0443\u043a\u043b\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432, \u043d\u043e \u044d\u0442\u043e \u0432\u043d\u0435 \u0442\u0435\u043c\u044b \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430.<br \/>  \u0427\u0442\u043e\u0431\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430: \u043e\u0434\u043d\u043e \u0442\u0435\u043b\u043e \u2014 \u043e\u0434\u043d\u0430 \u0444\u043e\u0440\u043c\u0430.<\/p>\n<blockquote><p><b>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: <\/b>PhysicsEditor, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0432\u043f\u0443\u043a\u043b\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 \u0444\u043e\u0440\u043c\u044b.<\/p><\/blockquote>\n<p>  \u0412\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0438 \u0434\u0432\u0430 \u0444\u0440\u0443\u043a\u0442\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/471\/013\/93b\/47101393b4a2999e5008e930dc7e3afe.png\"\/><\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0430\u043d\u0430\u043d\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432\u043f\u0443\u043a\u043b\u044b\u0439. \u0410\u0440\u0431\u0443\u0437, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0438\u0434\u0435\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0439 \u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043a\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0444\u043e\u0440\u043c\u0443 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430.<br \/>  \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c Box2D \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0444\u0440\u0443\u043a\u0442\u043e\u0432, \u043c\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u043f\u0440\u0438\u0434\u0435\u043c \u0432\u043e\u0442 \u043a \u044d\u0442\u043e\u043c\u0443:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/7b9\/c70\/b43\/7b9c70b43aa24981f580d2e8a4bb9911.png\"\/><\/p>\n<p>  \u041f\u043e\u043b\u0438\u0433\u043e\u043d\u044b \u0430\u0440\u0431\u0443\u0437\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0432 \u0444\u043e\u0440\u043c\u0435 \u0431\u0430\u043d\u0430\u043d\u0430 \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u0432\u0435\u0442.<br \/>  Box2D \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0441\u0432\u0435\u0442 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0431\u0430\u043d\u0430\u043d\u0430 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430\u043c\u0438, \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u043c\u0438.<br \/>  \u042d\u0442\u043e \u043d\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u043d\u0430\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f.<\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0444\u0440\u0443\u043a\u0442<\/h4>\n<p>  \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0435\u0440\u0432\u044b\u0439 \u0444\u0440\u0443\u043a\u0442: \u0430\u0440\u0431\u0443\u0437 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0435\u0433\u043e \u043a\u0443\u0441\u043e\u043a).<br \/>  \u0414\u0443\u043c\u0430\u044f \u043e\u0431 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 PolygonSprite, \u043c\u044b \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e initWithTexture \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0442\u0435\u043b\u043e Box2D, \u043d\u043e \u0437\u0430 \u0448\u0430\u0433 \u0434\u043e \u044d\u0442\u043e\u0433\u043e, \u0432 initWithFile, \u0442\u0435\u043b\u0430 \u0435\u0449\u0435 \u043d\u0435\u0442.<br \/>  \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u043e\u043c\u0443 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0442\u0435\u043b\u043e \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0440\u0443\u043a\u0442\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c, \u0432 initWithWorld, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0442\u0435\u043b\u043e \u0438 \u0437\u0430\u0434\u0430\u0435\u0442 \u0435\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<br \/>  \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c Box2D \u0442\u0435\u043b\u043e, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u043d\u0430\u0442\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c. \u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c PhysicsEditor. \u042d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u043d\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u0435\u0440\u0448\u0438\u043d \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430.<br \/>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0433\u043e \u0435\u0449\u0435 \u043d\u0435\u0442, <a href=\"http:\/\/sites.fastspring.com\/codeandweb\/product\/all?source=raywenderlich\">\u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 PhysicsEditor<\/a>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435. \u0412\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u0435 \u043f\u0443\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u0442\u0440\u0435\u043c\u044f \u043f\u0430\u043d\u0435\u043b\u044f\u043c\u0438.<br \/>  \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 PhysicsEditor \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430. \u0421\u043b\u0435\u0432\u0430 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c. \u041f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043c\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u0438\u0433\u043e\u043d \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u0421\u043f\u0440\u0430\u0432\u0430 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0442\u0435\u043b\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/1fc\/21e\/b05\/1fc21eb05df32dd5f1b6fe03808a27a6.png\"\/><\/p>\n<p>  \u041f\u0435\u0440\u0435\u0442\u044f\u043d\u0438\u0442\u0435 watermelon.png \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u043b\u0435\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0430\u0440\u0431\u0443\u0437 \u043d\u0430 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438.<br \/>  \u0423\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0430\u043c \u0443\u0440\u043e\u0432\u043d\u044f, \u043f\u0435\u0440\u0435\u0442\u044f\u0433\u0438\u0432\u0430\u044f \u043f\u043e\u043b\u0437\u0443\u043d\u043e\u043a \u0432\u043d\u0438\u0437\u0443 \u043e\u043a\u043d\u0430. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043c\u043d\u043e\u0433\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0432\u0432\u0435\u0440\u0445\u0443 \u044d\u0442\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430.<br \/>  \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u043f\u043e \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0443 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u201cAdd Vertex\u201d (\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u0443). \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0439\u0442\u0435, \u043f\u043e\u043a\u0430 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 5-8 \u0432\u0435\u0440\u0448\u0438\u043d. \u041f\u0435\u0440\u0435\u0434\u0432\u0438\u043d\u044c\u0442\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0432\u043e\u043a\u0440\u0443\u0433 \u0430\u0440\u0431\u0443\u0437\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b:<\/p>\n<ul>\n<li>\u041f\u043e\u043b\u0438\u0433\u043e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u044b\u043f\u0443\u043a\u043b\u044b\u043c.<\/li>\n<li>\u0412\u0441\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u0430\u0440\u0431\u0443\u0437\u0430 \u0431\u044b\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<blockquote><p><b>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435:<\/b> \u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u043e\u0440\u043c, \u044d\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u00abmagic wand tool\u00bb \u0432 PhysicsEditor. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u0435\u0440\u0448\u0438\u043d \u043d\u0430 5-8 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<\/p><\/blockquote>\n<p>  \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b \u043a\u043e \u0432\u0441\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c \u0444\u0440\u0443\u043a\u0442\u043e\u0432 \u0438 \u0431\u043e\u043c\u0431\u044b \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 Images \u0432 \u043f\u0430\u043f\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<br \/>  \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a:<\/p>\n<ul>\n<li>banana.png<\/li>\n<li>bomb.png<\/li>\n<li>grapes.png<\/li>\n<li>pineapple.png<\/li>\n<li>strawberry.png<\/li>\n<li>watermelon.png<\/li>\n<\/ul>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0435, \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 Exporter \u0432 \u201cBox2D generic (PLIST)\u201d, \u0438 \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/820\/a56\/280\/820a56280c6a8ee9fdf533cd8edda6ab.png\"\/><\/p>\n<p>  \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u00abPublish\u00bb \u0438\u043b\u0438 \u00abPublish As\u00bb \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 PLIST \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u043a\u0430\u043a fruits.plist.<br \/>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, fruits.plist, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 Misc \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<br \/>  \u041e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0444\u0430\u0439\u043b\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0435\u0433\u043e \u0432 Xcode \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.<br \/>  \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u0447\u0435\u043a \u043e\u043a\u043e\u043b\u043e \u00abbodies\u00bb \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0438 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u043f\u0440\u0435\u0434\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c. \u041a\u043b\u0438\u043a\u043d\u0438\u0442\u0435 \u043f\u043e watermelon \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c \u0430\u0440\u0431\u0443\u0437\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/030\/c07\/d6c\/030c07d6c357e93e9eb5e88c8cef7308.png\"\/><\/p>\n<p>  \u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0438\u0442\u0435 watermelon\/fixtures\/Item 0\/polygons \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Item 0, \u044f\u0432\u043b\u044f\u044e\u0449\u0435\u0435\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c. \u042d\u0442\u043e\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u2014 \u043d\u0430\u0448\u0430 \u0444\u043e\u0440\u043c\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u0430\u0441\u0441\u0438\u0432.<br \/>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043e\u0434\u0438\u043d \u043c\u0430\u0441\u0441\u0438\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0440: Item 0, Item 1), \u0442\u043e \u0432\u044b \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 8 \u0432\u0435\u0440\u0448\u0438\u043d, \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u043f\u0443\u043a\u043b\u0443\u044e \u0444\u043e\u0440\u043c\u0443. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0432 PhysicsEditor \u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0444\u043e\u0440\u043c\u0443.<br \/>  \u0414\u0430\u043b\u0435\u0435, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0438\u0442\u0435 Item 0 \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e. \u042d\u0442\u043e \u043d\u0430\u0448\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0438 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 { x, y }.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441 \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u0430\u0440\u0431\u0443\u0437\u0430.<br \/>  \u0412 Xcode \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443 iOS\\cocos2d v2.x\\CCNode Class. \u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u043e\u043c PolygonSprite \u0438 \u043d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e Watermelon. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 <b>Watermelon.h<\/b> \u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"objectivec\">\/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430 #import &quot;PolygonSprite.h&quot; <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043d\u0430 <b>Watermelon.m<\/b>, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u0432 <b>Watermelon.mm<\/b>, \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 init:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"objectivec\">\/\/ \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 @implementation - (id)initWithWorld:(b2World *)world {     int32 count = 7;     NSString *file = @&quot;watermelon.png&quot;;     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]))     {         \/\/ \u041c\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0435-\u0447\u0442\u043e \u0435\u0449\u0435 \u0434\u043b\u044f \u0444\u0440\u0443\u043a\u0442\u043e\u0432 \u0437\u0434\u0435\u0441\u044c     }     return self; } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u043d\u0430\u0441 \u0432\u0435\u0440\u0448\u0438\u043d (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 7). \u0414\u0430\u043b\u0435\u0435, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0435\u0440\u0448\u0438\u043d, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0441\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043b\u0438 \u0432 PLIST \u0444\u0430\u0439\u043b\u0435. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 PolygonSprite.<br \/>  \u041c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0442\u0440\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0435 \u0441\u043a\u043e\u043b\u044c\u0437\u0438\u043b\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438 \u0435\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0444\u0438\u0437\u0438\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438\u0441\u044c, \u0430 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430.<br \/>  \u041f\u043e\u0441\u043b\u0435, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0443\u043f\u0435\u0440\u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0435\u043c\u0443 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0442\u0435\u043b\u043e Box2D \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u2014 \u0444\u0440\u0443\u043a\u0442 \u0446\u0435\u043b\u044b\u0439.<br \/>  \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0430\u0440\u0431\u0443\u0437\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442.<br \/>  \u0412 \u043d\u0430\u0448\u0435\u043c \u043d\u0430\u0432\u0438\u0433\u0430\u0442\u043e\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u201cAdd Files to CutCutCut\u201d. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 Images \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0443\u043d\u043a\u0442\u044b \u201cCopy items into destination group\u2019s folder\u201d \u0438 \u201cCreate groups for any added folders\u201d \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u0433\u0430\u043b\u043e\u0447\u043a\u043e\u0439.<br \/>  \u0422\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u0430\u043d\u0430\u043d, \u0430\u043d\u0430\u043d\u0430\u0441, \u043a\u043b\u0443\u0431\u043d\u0438\u043a\u0443 \u0438 \u0431\u043e\u043c\u0431\u0443.<br \/>  \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0444\u0440\u0443\u043a\u0442 \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041f\u0430\u043a\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043a\u043b\u0430\u0441\u0441\u044b \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0440\u0443\u043a\u0442\u043e\u0432, \u043a\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445, \u0438\u043b\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0448\u0430\u0433.<br \/>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u0442.<\/p>\n<h4>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0440\u0443\u043a\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d<\/h4>\n<p>  \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0430 \u043c\u044b-\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0444\u0440\u0443\u043a\u0442\u044b \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u0443\u0441 \u0438 \u0446\u0432\u0435\u0442! :]<br \/>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043d\u0430 <b>HelloWorldLayer.h<\/b> \u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"objectivec\">\/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430 #import &quot;PolygonSprite.h&quot;   \/\/ \u0414\u043e\u0431\u0432\u044b\u044c\u0442\u0435 \u0432 @interface CCArray *_cache;   \/\/ \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u0441\u043b\u0435 @interface @property(nonatomic,retain)CCArray *cache; <\/code><\/pre>\n<p>  Switch back to <b>HelloWorldLayer.mm<\/b> and make these changes:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"objectivec\">\/\/ \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430 #import &quot;Watermelon.h&quot;   \/\/ \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 @implementation @synthesize cache = _cache;   \/\/ \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434 init, \u043f\u043e\u0434 [self initPhysics] [self initSprites];   \/\/ \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434 dealloc, \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c [super dealloc] [_cache release]; _cache = nil;   \/\/ \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 @implementation \u043f\u0435\u0440\u0435\u0434 @end   - (void)initSprites {     _cache = [[CCArray alloc] initWithCapacity:53];       \/\/ \u043f\u043e\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0441\u043f\u0440\u0430\u0439\u0442. \u0427\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u0432\u0435\u0441\u044c \u043c\u0435\u0442\u043e\u0434.     PolygonSprite *sprite = [[Watermelon alloc] initWithWorld:world];     [self addChild:sprite z:1];     [sprite activateCollisions];     [_cache addObject:sprite]; } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043a\u044d\u0448-\u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u0435 \u0444\u0440\u0443\u043a\u0442\u044b \u0438 \u0431\u043e\u043c\u0431\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0414\u0430\u043b\u0435\u0435, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0434\u0438\u043d \u0430\u0440\u0431\u0443\u0437 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u041c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c activeteCollisions, \u0442\u0430\u043a \u0447\u0442\u043e \u0430\u0440\u0431\u0443\u0437 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u043a\u0432\u043e\u0437\u044c \u0441\u0442\u0435\u043d\u044b.<br \/>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0430\u0440\u0431\u0443\u0437 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0446\u0435\u043d\u0442\u0440\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u043d\u0438\u0437 \u0438 \u043f\u0440\u0438\u0437\u0435\u043c\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0438\u0436\u043d\u044e\u044e \u0433\u0440\u0430\u043d\u044c \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/aa8\/30a\/b2f\/aa830ab2fd8572d44520c4089d7cbebe.png\"\/><\/p>\n<p>  \u0412\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0430\u0440\u0431\u0443\u0437 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u043e\u043c\u0443 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0433\u043e Box2D \u0442\u0435\u043b\u0430, \u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043b\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043b\u0435\u0432\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0441\u043f\u0440\u0430\u0439\u0442\u0430. \u0412\u0438\u0434\u043d\u043e \u0442\u043e\u043d\u043a\u0443\u044e \u043e\u0431\u0432\u043e\u0434\u043a\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0434\u0435\u0431\u0430\u0433 \u043c\u043e\u0434.<\/p>\n<h4>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435?<\/h4>\n<p>  \u0410 \u0432\u043e\u0442 \u0438 <a href=\"http:\/\/cdn4.raywenderlich.com\/downloads\/CutCutCutPart1.zip\">\u043f\u0440\u043e\u0435\u043a\u0442<\/a> \u0441\u043e \u0432\u0441\u0435\u043c \u043a\u043e\u0434\u043e\u043c \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430.<br \/>  \u041c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u0432. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d \u0434\u043b\u044f \u0410\u0440\u0431\u0443\u0437\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u043d\u0438\u0437.<br \/>  \u041d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430\u0445 \u043f\u043e Box2D, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 PRKit \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u0435\u043b\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Box2D. \u0421\u043a\u043e\u0440\u043e \u043d\u0430\u043c \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442!<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u043a\u043e <a href=\"http:\/\/www.raywenderlich.com\/14393\/how-to-make-a-game-like-fruit-ninja-with-box2d-and-cocos2d-part-2\">\u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430, \u0433\u0434\u0435 \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0440\u0435\u0437\u0430\u0442\u044c \u0444\u0440\u0443\u043a\u0442\u044b \u043d\u0430 \u043a\u0443\u0441\u043e\u0447\u043a\u0438!<\/p>\n<h5>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430<\/h5>\n<p>  \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u044b \u0441 \u0441\u0430\u0439\u0442\u0430 <a href=\"http:\/\/www.raywenderlich.com\/\">raywenderlich.com<\/a>.<br \/>  \u0412\u0441\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u0433\u0440 \u043f\u043e\u0434 iOS \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u044d\u0442\u043e\u0442 \u0441\u0430\u0439\u0442!<br \/>  \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u044b, \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0443.<br \/>  \u041e\u0431\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044f\u0445 \u0438 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u0445, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u0445\u0430\u0431\u0440\u0430\u043f\u043e\u0447\u0442\u0435 \u0438\u043b\u0438 \u0442\u0443\u0442 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<br \/>  \u0421 \u0440\u0430\u0434\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430 \u0432\u0441\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0443!        \t\t \t\t\t \t<\/p>\n<div class=\"polling\">\n<form action=\"\/json\/polling\/\" class=\"poll\" method=\"post\">\n<div class=\"poll_title\">\u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u0443\u044e \u0447\u0430\u0441\u0442\u044c?<\/div>\n<p>  \t\t<input type=\"hidden\" name=\"post_id\" value=\"164599\"\/> \t\t<input type=\"hidden\" name=\"polling_question_id\" value=\"6825\"\/>  \t\t<\/p>\n<table class=\"answer\">\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv35951\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"35951\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv35951\">\u0414\u0430<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv35953\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"35953\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv35953\">\u041d\u0435\u0442<\/label> \t\t\t\t<\/td>\n<\/tr>\n<\/table>\n<p class=\"for_users_only_msg\">\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a href=\"\/login\/\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/p>\n<p class=\"total\">\u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b 1 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.<\/p>\n<\/p><\/form>\n<\/p><\/div>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/164599\/\"> http:\/\/habrahabr.ru\/post\/164599\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">       <img decoding=\"async\" align=\"right\" src=\"http:\/\/habrastorage.org\/storage2\/8a8\/d75\/5e9\/8a8d755e998ec1c8779c7bb1dc55e896.png\" alt=\"image\"\/>\u0412 \u044d\u0442\u043e\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043e\u0442 <a href=\"http:\/\/www.raywenderlich.com\/about#allentan\">\u0410\u043b\u043b\u0430\u043d\u0430 \u0422\u0430\u043d\u0430<\/a> \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0438\u0433\u0440\u0443, \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043d\u0430 <a href=\"http:\/\/itunes.apple.com\/us\/app\/fruit-ninja\/id362949845?mt=8\">Fruit Ninja<\/a> \u043e\u0442 <a href=\"http:\/\/www.halfbrick.com\/\">Halfbrick Studios<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Cocos2D \u0438 Box2D.<br \/>  \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0438\u0433\u0440, \u043a\u043e\u0433\u0434\u0430 \u0438\u0433\u0440\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0437\u0430\u0435\u0442 \u0441\u043f\u0440\u0430\u0439\u0442, \u0442\u043e\u0442 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043f\u0440\u0430\u0439\u0442\u0430; \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u0430\u043a\u043e\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u0435\u0441\u0442\u0435 \u043c\u044b \u0440\u0430\u0437\u0440\u0443\u0431\u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442.<br \/>  \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0435\u0449\u044c \u043f\u043e\u043a\u0440\u0443\u0447\u0435. \u041d\u0430\u0448\u0438 \u0444\u0440\u0443\u043a\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0437\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432, \u0438 \u0440\u0435\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u043f\u0440\u043e\u0448\u0435\u043b \u043f\u0430\u043b\u0435\u0446 \u0438\u0433\u0440\u043e\u043a\u0430!<br \/>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043d\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 Cocos2D \u0438 Box2D. \u0415\u0441\u043b\u0438 \u0432\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 iOS, \u0442\u043e \u0432\u0430\u043c \u043b\u0443\u0447\u0448\u0435, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043f\u0440\u043e\u0431\u0435\u0436\u0442\u044c\u0441\u044f \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u043f\u043e <a href=\"http:\/\/www.raywenderlich.com\/352\/how-to-make-a-simple-iphone-game-with-cocos2d-tutorial\">\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u0432 Cocos2D<\/a> \u0438 <a href=\"http:\/\/www.raywenderlich.com\/457\/intro-to-box2d-with-cocos2d-tutorial-bouncing-balls\">\u0432 Box2D<\/a>.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0438 \u0432\u0438\u0434\u0435\u043e \u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0442\u044b\u0445 \u043f\u0440\u0438\u0435\u043c\u0447\u0438\u043a\u043e\u0432!<\/p>\n<p>  <iframe loading=\"lazy\" width=\"560\" height=\"349\" src=\"http:\/\/www.youtube.com\/embed\/BG4lqnFlXKk\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>  \u0412\u0441\u0435\u0445 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442! Warning: \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430!  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-164599","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/164599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=164599"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/164599\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=164599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=164599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=164599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}