рдирдорд╕реНрддреЗ!
рдЖрдЬ рд╣рдо рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдорд╛рдирдХ Apple рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рдХрд┐рд╕реА рднреА рдЧреЗрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ Box2D рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЫрд╣ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рд╕реНрдЯреВрдбрд┐рдпреЛ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХрд┐рддрд╛рдм рд╣реИред рдпрд╣ рдкреБрд╕реНрддрдХ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдЖрд╡реЗрджрди рдерд╛, рдФрд░ рдЬрдм рд╣рдордиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рд╣рдореЗрдВ рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдмрд╣реБрдд рдХрдо рдЕрдиреБрднрд╡ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдорд╛рдирдХ Apple рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдЪреБрдирд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЬрд╛рдирддреЗ рдереЗ - рдпрд╣ рдЙрд╕ рд╕рдордп рдЖрд╕рд╛рди рдерд╛ред рдХрд┐рддрд╛рдм рджреЛ рдорд╣реАрдиреЗ рдореЗрдВ рддреИрдпрд╛рд░ рд╣реЛ рдЧрдИ рдереАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрди рдЗрдЪреНрдЫрд╛рдУрдВ рд╕реЗ, рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪреА рдЫреЛрдбрд╝ рджреА рдЧрдИ рдереА, рддрд╛рдХрд┐ рдЬрдм рд╕рдордп рдФрд░ рдЬреНрдЮрд╛рди рд╣реЛ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред
рднреМрддрд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рди
рдЕрдВрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдерд╛, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓реЗ: рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдПрдВ, рдЙрдиреНрд╣реЗрдВ рдлреЗрдВрдХ рджреЗрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реАрд▓рд░реЛрдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдиреЗ рд╕реЗ рдХреЛрдиреЗ рддрдХ рдлреЗрдВрдХ рджреЗрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рднреМрддрд┐рдХ рдЗрдВрдЬрди рдХреЗ рдПрдХреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЬрдм Cocos2D рдФрд░ Box2D рдХреЛ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдереА, рддреЛ рдПрдХ рд╡рд╛рдЬрд┐рдм рд╕рд╡рд╛рд▓ рдЦрдбрд╝рд╛ рд╣реБрдЖ: рдпрджрд┐ Box2D рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЪрд┐рддреНрд░рдордп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╣реА рдкреБрд╕реНрддрдХ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ?
рд╡реЗрдм рдкрд░ рдПрдХ рдЫреЛрдЯреА рдЦреЛрдЬ рдиреЗ рдПрдХ рдЕрджреНрднреБрдд рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдмреНрд▓реЙрдЧ
рд▓реЗрдЦ http://www.cocoanetics.com рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдпреВрдЖрдИрдХреИрдЯ рдкрд░ рдПрдХ рдорд╛рдирдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрд╕ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдмреЙрдХреНрд╕ 2 рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рддрд╛ рд╣реИред рдФрд░ рд╣рдордиреЗ рдХрд╛рдо рдХрд░рдирд╛ рддрдп рдХрд┐рдпрд╛ред рд╣рдо рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рдереЗ рдХрд┐ рд╕реА ++ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЗрдВрдЬрди рдХреЗ рдХрд╛рдо рдХреЛ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдереЛрдбрд╝реЗ рд╕реЗ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рд▓рд╛рдЧрдд рдереА - рдкреЗрдЬ рдХреНрд▓рд╛рд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА ++ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдХреЛрдб рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рдЕрдиреБрдХреВрд▓рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ 4 рдШрдВрдЯреЗ рд▓рдЧреЗред
рдХрд╛рд░реНрдп рд╕рд┐рджреНрдзрд╛рдВрдд
рдЗрдВрдЬрди рдПрдХреАрдХрд░рдг рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд░рд▓ рд╣реИ (рд╕рдВрдХреЗрддрд┐рдд рд▓реЗрдЦ рджреЗрдЦреЗрдВ)ред рдЬрдм рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдлрд┐рд░ рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕реАрдорд╛рдПрдБ рд╕реМрдВрдкреА рдЬрд╛рддреА рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░реА рд╕реНрдХреНрд░реАрди), рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд┐рдХрд╛рдп рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдирд┐рд░реНрдорд┐рдд рдирд┐рдХрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХ UIKit рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реМрдВрдкреЗ рдЧрдП рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, UIImageView рд╡рд░реНрдЧ рдХреЗ рдЪрд┐рддреНрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдбрд╛рдЯрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм viewDidAppear рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЯрд╛рдЗрдорд░ рдЖрд╡рд╢реНрдпрдХ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рднреА рдирд┐рдХрд╛рдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдирд┐рдХрд╛рдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкрджреЛрдВ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдпрд╣ рднреНрд░рдо рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рддрд╕реНрд╡реАрд░реЗрдВ рдЦреБрдж рд╕реАрдзреЗ рдЯрдХрд░рд╛рддреА рд╣реИрдВред рдЬрдм ViewDidDissapear рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЯрд╛рдЗрдорд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдирд┐рд░реНрдорд┐рдд рдирд┐рдХрд╛рдп рдФрд░ рдЙрдирдХреА рд╕рдВрдмрдВрдзрд┐рдд рдЫрд╡рд┐рдпрд╛рдВ рджреБрдирд┐рдпрд╛ рд╕реЗ рдФрд░ self.view рд╕реЗ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдЖрд╢рдВрдХрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рдпреЛрдЬрдирд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдлреНрд░реЗрдо рджрд░ рдирд╣реАрдВ рджреЗрдЧреА, рд▓реЗрдХрд┐рди рдЖрдИрдлреЛрди 3 рдЬреА рдЬреИрд╕реЗ рдкреБрд░рд╛рдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рднреА рддреЗрдЬреА рд╕реЗ рдирд┐рдХрд▓рд╛, рдХреЛрдХ 2 рдбреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдВрдЦреЗрдВ рдиреАрдЪреА рдирд╣реАрдВ рд╣реИрдВред
рд╢рд╡
рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдиреЗ рд╢рд░реАрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рджреГрд╢реНрдп рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЗрд╡рд▓ рдЖрдпрддрд╛рдХрд╛рд░ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд▓рдЪреАрд▓рд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдХреЗ рд╢рд░реАрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред Cocos2D рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ, рд╣рдордиреЗ рдореИрдХ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрд╡рд▓рдкрд░ рдмреЛрдЧрджрд╛рди
рд╡реНрд▓рд╛рдбреВ рд╕реЗ
рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╣реЗрд▓реНрдкрд░ ред рдПрдХ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЖрдкрдХреЛ рддреИрдпрд╛рд░ рдЪрд┐рддреНрд░реЛрдВ рд╕реЗ рдмрдирд╛рд╡рдЯ рдХреЗ рдирдХреНрд╢реЗ рдмрдирд╛рдиреЗ рдФрд░ рднреМрддрд┐рдХ рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдЖрдХрд╛рд░, рдШрдирддреНрд╡, рдШрд░реНрд╖рдг рдЧреБрдгрд╛рдВрдХ, рд▓реЛрдЪ рдЖрджрд┐ред - рд╡рд╣ рд╕рдм рдЬреЛ рдЬрд░реВрд░рдд рд╣реИред рдкрд░рд┐рдгрд╛рдореА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрдХ рдиреЗ рд╕реНрдкреНрд░рд╛рдЗрдЯрд╣реЗрд▓рдкрд░рд▓реЙрдбрд░ рд╡рд░реНрдЧ рд▓рд┐рдЦрд╛, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕рд╣реА рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдФрд░ рдХреЛрдХреЛрд╕ 2 рдбреА рдкрд░рдд рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╢рд░реАрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдкрд░реЗрд╢рд╛рдиреА - рдпрд╣ рд╡рд░реНрдЧ рдХреЛрдХреЛрд╕ 2 рдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╕рдЦреНрддреА рд╕реЗ рдХреЗрдВрджреНрд░рд┐рдд рдерд╛ред рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рд╕реЗ "рдирд╛рд░рд┐рдпрд▓" рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдХреБрдЫ рд╕рдордп рдФрд░ "рдХрдЯ рдЖрдЙрдЯ" рдХрд░рдирд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╢рд░реАрд░ рдХреЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА - рдлреЙрд░реНрдо (рдмрдирд╛рд╡рдЯ рдХреЗ рдирдХреНрд╢реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред рдЕрдм рд╣рдорд╛рд░реЗ рд╣рд╛рде рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдЪрд┐рдд рддрд░реАрдХрд╛ рдерд╛, рднреМрддрд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЛ рд╣рдорд╛рд░реА рдкрд╣рд▓реА рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рджреВрд╕рд░реА рд╣рд╡рд╛ рджреЗрдирд╛ рдФрд░, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдореАрдХреНрд╖рд╛ рдЬреЛрдбрд╝реЗрдВред рдореВрд▓ рд▓реЗрдЦ рд╕реЗ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдореВрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
- (void) addPhysicalBodyForView:(UIImageView *)physicalImageView ofType:(NSString *)type { // get image's center coordinates CGPoint position = physicalImageView.center; // Define the dynamic body. b2BodyDef bodyDef; bodyDef.type = b2_dynamicBody; bodyDef.position.Set(position.x/PTM_RATIO, (screenSize.height - position.y)/PTM_RATIO); // convert into Box2D coordinates bodyDef.userData = physicalImageView; // Tell the physics world to create the body b2Body *body = world->CreateBody(&bodyDef); position = CGPointMake(bodyDef.position.x, bodyDef.position.y); // use modified SpriteHelperLoader to get shape tempBody = [bodyLoader bodyWithUniqueName:type atPosition:position world:world]; b2Fixture* fixture = tempBody->GetFixtureList(); b2Shape *shape = fixture->GetShape(); // Define the dynamic body fixture. b2FixtureDef fixtureDef; fixtureDef.shape = shape; fixtureDef.density = fixture->GetDensity(); fixtureDef.friction = fixture->GetFriction(); fixtureDef.restitution = fixture->GetRestitution(); body->CreateFixture(&fixtureDef); // a dynamic body reacts to forces right away body->SetType(b2_dynamicBody); world->DestroyBody(tempBody); fixture = nil; shape = nil; }
рдЯрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ
рд╕реНрдкрд░реНрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд Box2D
рддрдВрддреНрд░ рдФрд░
рдорд╛рдирдХ UIKit рд╕реНрдкрд░реНрд╢ рдкрд╣рдЪрд╛рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЬрдм рдХреЛрдИ рд╕реНрдкрд░реНрд╢ рдореБрдЦреНрдп рджреГрд╢реНрдп рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рд╕реНрдкрд░реНрд╢ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ UIKit рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдмреЙрдХреНрд╕ 2 рдбреА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛ рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╢рд░реАрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рдВрдЪ рд╣реИред рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рд╣рд┐рдЯ рд╣реИ, рддреЛ рдЗрд╕ рд╢рд░реАрд░ рдХреЗ рдмреАрдЪ рд╢рд░реАрд░-рдЬрдореАрди (рдЧреНрд░рд╛рдЙрдВрдбрдмреЙрдбреА) рдХреЗ рд╕рд╛рде рдПрдХ рд╢рд╛рд░реАрд░рд┐рдХ рд╕рдВрдмрдВрдз рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рд╕реЗ рд╢рд░реАрд░ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬрдм рд╕реНрдкрд░реНрд╢ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╢рд░реАрд░ рдЖрдВрджреЛрд▓рди рдХреЗ рджреМрд░рд╛рди рдЕрдзрд┐рдЧреНрд░рд╣рд┐рдд рдЖрд╡реЗрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореБрдХреНрдд рдЙрдбрд╝рд╛рди (рдХрдиреЗрдХреНрд╢рди рдХреЛ рдирд╖реНрдЯ рдХрд░рдХреЗ) рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдЦреАрдВрдЪреЗ рдЧрдП рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЙрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрдорд┐рдд рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЯрдХрд░рд╛рд╡ рдХреА рдЧрдгрдирд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CollideConnected рд╕рдВрдЪрд╛рд░ рдЧреБрдг рдХреЛ YES рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
class QueryCallback : public b2QueryCallback { public: QueryCallback(const b2Vec2& point) { m_point = point; m_fixture = NULL; } bool ReportFixture(b2Fixture* fixture) { b2Body* body = fixture->GetBody(); if (body->GetType() == b2_dynamicBody) { bool inside = fixture->TestPoint(m_point); if (inside) { m_fixture = fixture; // We are done, terminate the query. return false; } } // Continue the query. return true; } b2Vec2 m_point; b2Fixture* m_fixture; }; [...] #pragma mark - Drag and Drop // source - http://iphonedev.net/2009/08/05/how-to-grab-a-sprite-with-cocos2d-and-box2d/ - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch* myTouch = [touches anyObject]; CGPoint location = [myTouch locationInView: [myTouch view]]; location = CGPointMake(location.x, screenSize.height-location.y); m_mouseWorld.Set(location.x/PTM_RATIO, location.y/PTM_RATIO); if (m_mouseJoint != NULL) { NSLog(@"m_mouseJoint != NULL"); return; } b2AABB aabb; b2Vec2 d; d.Set(0.001f, 0.001f); aabb.lowerBound = m_mouseWorld - d; aabb.upperBound = m_mouseWorld + d; // Query the world for overlapping shapes. QueryCallback callback(m_mouseWorld); world->QueryAABB(&callback, aabb); b2Body* nbody = NULL; if (callback.m_fixture) { nbody = callback.m_fixture->GetBody(); } if (nbody) { b2MouseJointDef md; md.bodyA = groundBody; // md.bodyB = nbody; md.target = m_mouseWorld; md.collideConnected = YES; #ifdef TARGET_FLOAT32_IS_FIXED md.maxForce = (nbody->GetMass() < 16.0)? (1000.0f * nbody->GetMass()) : float32(16000.0); #else md.maxForce = 1000.0f * nbody->GetMass(); #endif m_mouseJoint = (b2MouseJoint*)world->CreateJoint(&md); nbody->SetAwake(YES); } } - (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch* myTouch = [touches anyObject]; CGPoint location = [myTouch locationInView: [myTouch view]]; // translate uikit coordinates into box2d coordinates location = CGPointMake(location.x, screenSize.height-location.y); m_mouseWorld.Set(location.x/PTM_RATIO, location.y/PTM_RATIO); if (m_mouseJoint) { m_mouseJoint->SetTarget(m_mouseWorld); } } - (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"touches ended"); if (m_mouseJoint) { AudioServicesPlaySystemSound (soundThrust); world->DestroyJoint(m_mouseJoint); m_mouseJoint = NULL; } } - (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { [self touchesEnded:touches withEvent:event]; }
accelerometer
рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдмреЙрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рд╕рд░рд▓ рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдХреЗ рд░реАрдбрд┐рдВрдЧ рд╕реЗ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╡реЗрдХреНрдЯрд░ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛ рдЕрдХреНрд╖реЛрдВ - рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { b2Vec2 gravity; gravity.Set( acceleration.x * 9.81, acceleration.y * 9.81 ); world->SetGravity(gravity); }
рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЧрд▓рддреА рд╕реЗ рдЕрд╡рд╛рдВрдЫрдиреАрдп рднрд╛рд░рд╣реАрдирддрд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдпрджрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреНрд╖реИрддрд┐рдЬ рд╕рддрд╣ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдЕрдХреНрд╖реЛрдВ рдкрд░ рдкреГрдереНрд╡реА рдХреЗ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рд▓рдЧрднрдЧ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕реА рдЖрднрд╛рд╕реА рднрд╛рд░рд╣реАрдирддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╡рд╕реНрддреБрдПрдВ рд╣рд╡рд╛ рдореЗрдВ рдЕрд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЪрдврд╝рддреА рд░рд╣реЗрдВрдЧреАред рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╡реЗрдХреНрдЯрд░ рд╣рдореЗрд╢рд╛ 1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕реНрдерд╛рди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рдмрд▓ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рддрд╣рдд рд╣реЛрдЧрд╛: рдЕрдкрдиреЗ рдШреБрдЯрдиреЛрдВ рдпрд╛ рдЯреЗрдмрд▓ рдкрд░, рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рд▓рдВрдмрд╡рдд рдпрд╛ рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреА рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рдеред рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреА рджрд┐рд╢рд╛ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдПрдХ рдЧреБрдкреНрдд рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рдЬрд╛рдирдХрд╛рд░ рдмрддрд╛рддреЗ рд╣реИрдВред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╡реЗрдХреНрдЯрд░ рдФрд░ рдЙрд╕ рдкрд░ рдмреЗрд╣рддрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдПрдХ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд┐рд░реНрдл
рдпреВрдЖрдИрд╕реАрд╕реАрд░реЗрд▓реЛрдореАрдЯрд░рдбреЗрд▓рдЧреЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдЬреЛ рдЕрдм iOS 5 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ), рдЖрдкрдХреЛ
рдХреЛрд░рдореЛрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдПрдХреАрдХреГрдд
CMMotionManager рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рди
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рд╣рдорд╛рд░реА
рдкреБрд╕реНрддрдХ рдХреЗ 4 рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рднреМрддрд┐рдХ рдЗрдВрдЬрди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рджрд┐рди рд▓рдЧреЗ, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдПрдХ рдЫреЛрдЯреЗ рдЧреЗрдо рдкреНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде рдЖрдирд╛, рдЙрдкрдпреБрдХреНрдд рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдХреЛрдбрд┐рдВрдЧ рдмрдирд╛рдирд╛ - рдХреБрд▓ рд▓рд╛рдЧрддреЗрдВ рдЫреЛрдЯреА рд╣реИрдВ, рдФрд░ рдХрдИ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдЖрдЧреЗ рдмрдврд╝реЛ рдФрд░ рддреБрдо!
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред