рд╣рд╛рдмрд░рд╛ рд╕рдореБрджрд╛рдп рдХреЛ рдирдорд╕реНрдХрд╛рд░ред
рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдХрд╛рдлреА рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рднреМрддрд┐рдХреА рдХреЗ рд╕рд╛рде рдПрдХ рдлреНрд▓реИрд╢ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдПрдХ рдФрд░ рдЖрдХрд╕реНрдорд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ , рдПрдХ рджреВрд╕рд░реЗ рд▓реЗрдЦ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рд╕рд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреЛ рдХреИрд╕реЗ рдЦреАрдВрдЪрдирд╛ рд╣реИ рдФрд░ рд╕реЗрдВрд╕рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╣реИред рдмрд╛рдХреА рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рд╣реИред
рдЗрди рджреЛ рдкрд╛рдареЛрдВ рд╕реЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ (рд╕рдВрдЧреАрдд рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдзреНрд╡рдирд┐ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ) ред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЖрдЦрд┐рд░реА "
рд╕рдмрдХ " рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛ред
рдЧреНрд░рд╛рдлрд┐рдХреНрд╕
рдЕрдм рдЖрдкрдХреЛ рдЦреЗрд▓ рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЦреАрдВрдЪрдиреЗ рдХреЗ
рд▓рд┐рдП рдЪреЛрд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реИ , рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрдХ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧреЗрдореНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдмрдирд╛рд╡рдЯ 1:рдмрдирд╛рд╡рдЯ 2:рдпрд╣рд╛рдБ рджреЛ BMP рдмрдирд╛рд╡рдЯ, 474x474 рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИрдВред
рд╡реЗ рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХрд╛ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдмрдирд╛рд╡рдЯ 2 рдПрдХ рд╕реНрдерд┐рд░ рдмрдирд╛рд╡рдЯ рд╣реИ, рдЗрд╕реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдореЗрд╢рд╛ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░реЛрдЯреЗрд╢рди рдХреЛрдг рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред
рдмрдирд╛рд╡рдЯ 1 рджреБрдирд┐рдпрд╛ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдирд╛рд╡рдЯ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдмрд┐рдЧрдмреИрдореНрдкрдлрд┐рд▓ рдФрд░ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдХреА рдЖрдпрддреЛрдВ рд╕реЗ рднрд░ рджреЗрдВрдЧреЗред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬреЛ рдмрд╛рдврд╝ рдирд╣реАрдВ рд╣реИ рд╡рд╣ рдЖрдВрджреЛрд▓рди рдФрд░ рдЦрд╛рд▓реА рдЬрдЧрд╣ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреА рдЬрд╝рд░реВрд░рдд рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдЗрд╕реЗ рдмрд╣реБрдд рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдорд┐рд▓рддрд╛ рд╣реИ:
рд╣рдо рдЕрдкрдиреА рд╣реАрд░реЛ рдмреЙрд▓ рдХреЛ рдПрдХ рд╢реЗрд▓-рдкрд┐рдХреНрдЪрд░ (рд╕реНрдкреНрд░рд╛рдЗрдЯ) рджреЗрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдореИрдВ рдЕрдкрдирд╛ рд╢реЗрдбреНрдпреВрд▓ рд▓реЗрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рднреА рджреЗрддрд╛ рд╣реВрдВ:

рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЙрдмрд╛рдК mazes рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдмрд╛рдК рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣рдо рдмрд╛рдзрд╛рдПрдВ рдмрдирд╛рдПрдВрдЧреЗ: рд╕реНрдкрд╛рдЗрдХреНрд╕, рдлрд╛рдпрд░, рд▓реЗрдЬрд░ред рд▓реЗрдХрд┐рди рдХрдм рд╕реЗ рд▓реЗрдЦ рдХреА рдорд╛рддреНрд░рд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рд╕реНрдкрд╛рдЗрдХреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдмрд╛рдХреА рд╕рдм рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдЯреЗрдиреЙрди рдмрдирд╛рд╡рдЯ:

рд╣рдо рдЖрд╡рд╢реНрдпрдХ рд▓рд┐рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рддреИрдпрд╛рд░ рд╣реИрдВред
рд╕реЗрдВрд╕рд░
рд╕реЗрдВрд╕рд░ рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ (рд╕реНрдЯреЗрдЯрд┐рдХ рдмреЙрдбреА, рдбрд╛рдпрдирд╛рдорд┐рдХ рдмреЙрдбреА), рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрдЗрдиреНрд╕рд░ рдзреНрд╡рдЬ рд╣реИред рдпрд╣ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╕реНрддреБ "рдЯрдХрд░рд╛рд╡" рдорд╣рд╕реВрд╕ рдХрд░рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдиреЗрд╕рд░ рдзреНрд╡рдЬ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдПрдХ рдареЛрд╕ рд╡рд╕реНрддреБ - рдпрд╣ рдмрд╕ рд╕реЗрдВрд╕рд░ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреЙрдиреНрдЯреИрдХреНрдЯ рд▓рд┐рд╕реНрдЯрдирд░ рдореЗрдВ рдЯрдХрд░рд╛рд╡ рдХреА рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИред
ContactListener Box2D рдореЗрдВ рдПрдХ рдЯрдХреНрдХрд░ рд╢реНрд░реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреБрдирд┐рдпрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдП рдФрд░ рдмреА рдЯрдХрд░рд╛рддреЗ рд╣реИрдВ, Add (рдмрд┐рдВрджреБ: b2ContactPoint) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдЯреИрдХреНрдЯрд▓рд┐рд╕реНрдЯрдирд░ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдмрд┐рдВрджреБ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ: рдЯрдХрд░рд╛рд╡ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЖрдХреГрддрд┐рдХрд╛рд░рдХ; рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЯрдХреНрдХрд░ рдмрд┐рдВрджреБ; рдЯрдХрд░рд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╢рд░реАрд░ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рд╕реЗрдВрд╕рд░, рд╢реНрд░реЛрддрд╛рдУрдВ, рдХреБрдЫ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреНрдпреЛрдВ рд╣реИ?рдлрд┐рд░, рд╕реНрдкрд╛рдЗрдХ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдирд╛рдпрдХ рдХреА рдЯрдХреНрдХрд░ рдореЗрдВ - рдирд╛рдпрдХ рдХреА рдореМрдд рдХрд╛ рдХрд╛рд░рдг рдФрд░ рд╕реНрддрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рд╡реНрдпрд╡рд╕рд╛рдп рддрдХ, рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ
рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдЦрдирд╛
рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЖрдХрд╛рд░ 500x500 рд╕реЗ 600x580 рддрдХ рдмрджрд▓рддреЗ рд╣реИрдВред
рдбрд┐рдмрдЧ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдмрджрд▓реЗрдВ:
sprite.x = 300;
рд╕рднреА рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рд╕рднреА рдХреЗрдВрджреНрд░рд┐рддред
рдирдП рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
public var game:Sprite;
рдореБрдЦреНрдп рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ, рдЧреЗрдо рдФрд░ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ:
game = new sprite_game(); game.x = 300;
рдлреНрд▓реИрд╢ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдХрд▓реНрдк рд╣реИ "рдХреИрд╢ рдмрд┐рдЯрдореИрдк рдХреЗ рд░реВрдк рдореЗрдВ" рдЬрд┐рд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд▓рд┐рдк рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрд▓рд┐рдк рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдмрд┐рдЯрдореИрдк рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдм рдЗрд╕реЗ рд╡реЗрдХреНрдЯрд░ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реНрдг рдЦреБрд╢реА рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
EnterFrameListener рдореЗрдВ "рдЧрд┐рдпрд░" рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЛ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдЬреЛрдбрд╝реЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдШреБрдорд╛рддреЗ рд╣реИрдВ:
game.rotation = sprite.rotation = rotator;
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдШреВрд░реНрдгрди рд╣рд░реЗ
рдХрдЪрд░реЗ рдХреА рддрд╕реНрд╡реАрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдЖрдВрдЦ рдХреЛ рдкреНрд░рд╕рдиреНрди рдХрд░рддреЗ рд╣реИрдВред
рдЧреЗрдВрдж рдХреЛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рджреЗрдВред рд╣рдо
createHero рдлрд╝рдВрдХреНрд╢рди рдХреА
рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдВрдд рдореЗрдВ рдХрд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
var sprite:Sprite = new sprites_hero(); sprite.width = sprite.height = 16; viewport.addChild(sprite); hero.SetSprite(sprite);
body.SetSprite - рдореВрд▓
рдмреЙрдХреНрд╕ 2D рд╕реЗ
рдЧрд╛рдпрдм рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ GetUserData рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рд▓реЗрдХрд┐рди GetUserData рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ ("рд╣реАрд░реЛ", "рдмреЙрдХреНрд╕") рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЗрдЯрд╕реНрдкреНрд░рд┐рдЯ рдХреЛ рдЗрдВрдЬрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ред рдпрджрд┐ рдЖрдк рдореВрд▓ Box2D рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ - рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдЧрддрд┐рд╢реАрд▓ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: body.SetUserData ({рдкреНрд░рдХрд╛рд░: "рд╣реАрд░реЛ", рд╕реНрдкреНрд░рд╛рдЗрдЯ: рд╕реНрдкреНрд░рд╛рдЗрдЯ});
рд╣рдо рд╣рд░ рдлреНрд░реЗрдо рдХреЗ рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдПрдВрдЯрд░рдлрд╝реНрд░реЗрдорд▓рд┐рд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд╕ рд╕рдордп рдЬрд╣рд╛рдВ рд╣рдо рдирд╛рдпрдХ рдХреЗ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛрдбрд╝реЗрдВ:
body.GetSprite().x = body.GetPosition().x * 30; body.GetSprite().y = body.GetPosition().y * 30; body.GetSprite().rotation = body.GetAngle() * 180 / Math.PI;
рд╣рдо рдЕрд▓реНрдлрд╛ рдХреЛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдбрд┐рдмрдЧ рд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░ рд╕рдХреЗрдВ:
dbgDraw.m_alpha = 0.5; dbgDraw.m_fillAlpha = 0.1;
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдорд░реЛрдбрд╝рддреЗ рд╣реИрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдбрд┐рдмрдЧрдбреНрд░рд╛рд╡ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рдХрд┐ рд╣рдорд╛рд░реА рджреАрд╡рд╛рд░реЗрдВ рдЦреАрдВрдЪреА рдирд╣реАрдВ рдЧрдИ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред
рдЕрдиреБрд╡рд╛рдж рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдЪрд░ рдмрдирд╛рдПрдБ:
public var matrix_texture:Matrix; public var textureal:BitmapData;
рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЖрд░рдВрдн рдХрд░реЗрдВ:
textureal = new texture_gear(); matrix_texture = new Matrix(); matrix_texture.translate(237, 237);
CreateStaticRect рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХреБрдЫ рдЬреЛрдбрд╝реЗрдВ:
level_sprite.graphics.beginBitmapFill(textureal, matrix_texture); level_sprite.graphics.drawRect(x - 150, y - 150, w, h); level_sprite.graphics.endFill();
рдФрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдФрд░ StaticRect (рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ) рдЬреЛрдбрд╝реЗрдВ:
CreateStaticRect(150, 140, 30, 30);
рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рдбрд┐рдмрдЧрдбреНрд░реЙ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ:
рд╣рдо рд╕рдВрдХрд▓рд┐рдд рджреАрд╡рд╛рд░реЛрдВ рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдордиреЗ рдЕрдкрдиреА рджреБрдирд┐рдпрд╛ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдирд╛, рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╕реАрдЦрд╛ред
рд╣рдо рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рдмрд╛рдзрд╛рдПрдБ рдЗрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ
рдорд┐рд▓реЗрдВрдЧреА ,
рдмрд╛рдзрд╛ рд╕реВрдЪреА:
package { import Box2D.Dynamics.b2World; import flash.display.Sprite; public class Obstacle extends Sprite { public var active:Boolean = true;
рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдмрдЪреНрдЪрд╛ рдмрдирд╛рдПрдВ,
рд╕реНрдкрд╛рдЗрдХ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░рд╛ рд╕реНрдкрд╛рдЗрдХ), рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ:
package { import Box2D.Collision.Shapes.b2CircleDef; import Box2D.Dynamics.b2Body; import Box2D.Dynamics.b2BodyDef; import Box2D.Dynamics.b2World; import flash.display.Sprite; public class Spike extends Obstacle { public function Spike(_viewport:Sprite, _world:b2World, x:Number, y:Number, angle:int = 0) { super(_viewport, _world, x, y, angle);
рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рддреАрди рд╕реНрдкрд╛рдЗрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ, рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ:
new Spike(viewport, world, 37, 5, 0); new Spike(viewport, world, 15, 27, 1); new Spike(viewport, world, 15, -17, 3);
рд╣рдо рд╕реНрдкрд╛рдЗрдХреНрд╕ рдХрд╛ рд╕рдВрдХрд▓рди, рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рддрдХ рдЦрддрд░рдирд╛рдХ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЦрддрд░рдирд╛рдХ рдмрдирд╛ рджреЗрдВрдЧреЗред
рд╣рдо рдПрдХ рдирдпрд╛
GearMazeContact рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐
b2ContactListener рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВрдЧреЗ (рд╣рд╛рдБ, AS3 рдореЗрдВ
рдУрд╡рд░рд░рд╛рдЗрдб рдмрд╣реБрдд рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ)ред рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ:
package { import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; import Box2D.Common.Math.*; import flash.display.MovieClip; public class GearMazeContact extends b2ContactListener { public override function Add(point:b2ContactPoint):void { var p1:b2Body = point.shape1.GetBody(); var p2:b2Body = point.shape2.GetBody(); if(p1.GetUserData()=="hero" && p2.GetUserData()=="spike") { if ((p2.GetSprite() as Obstacle).active) { trace("Ha-ha!"); p1.SetUserData("hero_dead");
рд╣рдо рдЕрдкрдиреЗ рд╢реНрд░реЛрддрд╛ рдХреЛ рджреБрдирд┐рдпрд╛ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЙрд╕реА рдЬрдЧрд╣ рдкрд░ рдЬрд╣рд╛рдБ рд╣рдо рджреБрдирд┐рдпрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ DebugDraw рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:
var GearListener:GearMazeContact = new GearMazeContact(); world.SetContactListener(GearListener);
рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдореГрддреНрдпреБ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдорд╛рд░реА рдЧреЗрдВрдж рдХреЛ рдирд┐рдХрд╛рд▓реЗрдЧреА, рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ (enterFrameListener):
if (body.GetUserData() == "hero_dead") { if (body.GetSprite() is Sprite) viewport.removeChild(body.GetSprite()); world.DestroyBody(body); }
рдпрд╣рд╛рдВ рдЖрдк рдЧреЗрдордкреНрд▓реЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдЪреНрдЫрд╛рдИ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд▓реЗрдЬрд░, рдкреЛрд░реНрдЯрд▓, рдЖрд░реА,
рд▓рдбрд╝рдХрд┐рдпрд╛рдВ ред
рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдЦрд┐рд▓реМрдирд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдУрдмреНрд▓рд╛рд╕реНрдЯ рдХреЗ рд╕рд╛рде рд▓реЗрдмрд┐рд░рд┐рдВрде рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рдВрдкрд░рд╛ рд╕реЗ, рдореИрдВ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реВрдВ, рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдФрд░ рдЗрди рдЪрд░рдгреЛрдВ рдореЗрдВ рддреИрдпрд╛рд░ рдЦрд┐рд▓реМрдирд╛ред
рд╡реИрд╕реЗ, рдХреЛрдИ рд╕рдорд╛рдкреНрдд рдЦреЗрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЕрдлрд╕реЛрд╕ :-(
рдЕрдм рддрдХ рдпрд╣ 18 рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрд▓реНрдлрд╝рд╛ рд╣реИред рдХреЛрдб рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореБрдЭреЗ рдорд╛рд░рддрд╛ рд╣реИ, рдореИрдВ рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ: рдмрдирд╛рдПрдВ, рдмрдирд╛рдПрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдВред рдкреИрд╕рд╛ рдореБрдЭреЗ рдмреНрдпрд╛рдЬ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ :-)
рд▓рд┐рдВрдХ:
рд╕реНрд░реЛрдд рдХреЛрдб |
рдбреЗрдореЛ |
рдЦреЗрд▓ рдЦрддреНрдоPS рдЕрдЪреНрдЫреЗ рдЖрджрдореА рдбреЗрдЯрд╛рдХреИрдореНрдкрдмреЙрдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЬрдм рдЙрд╕рдиреЗ рд▓реЗрдЦ рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд▓рд┐рдЦрд╛, рддреЛ рдЙрд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рджреА, рдЙрд╕рдиреЗ рдореБрдЭреЗ рдлреНрд░реАрд╡реЗрдпрд░ рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдбреЗрдореЛ, рдЧреЗрдо рдФрд░ рд╕реЛрд░реНрд╕ рдХреЛрдб рджрд┐рдПред
PSS рдЖрдк рдЕрднреА рднреА рдореБрдЭреЗ as3 рдореЗрдВ рдЧреЗрдо рджреЗрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред