рдЗрди-рдЧреЗрдо рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ 
рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ 
рд╣реИ ред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЬрд╛рдирд╡рд░ рдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдЬрд▓реНрджреА рд╕реЗ рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рдмрдпрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЙрд▓рдЭ рдЕрд░рд╛рдЬрдХрддрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдПрдХ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрдЯреЗрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд░реЗрдВрдЧреЗ!
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рдЖрдк:
- рдПрдХрддрд╛ рдореЗрдВ рд░рд╛рдЬреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдЬрд╛рдиреЗрдВред
- рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИред
- рдЕрдкрдиреЗ рдЪрд░рд┐рддреНрд░ рдХреА рдЧрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВред
рдиреЛрдЯ : рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИ; рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХрддрд╛ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ рдФрд░ C # рдХрд╛ рдФрд╕рдд рд╕реНрддрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдпреВрдирд┐рдЯреА 2019.2 рдФрд░ C # 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдХрд╛рдо рдкрд░ рд▓рдЧрдирд╛
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рд╛рдордЧреНрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред 
рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдирд╛ рдФрд░ рдПрдХрддрд╛ рдореЗрдВ 
рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдИ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред 
рдПрд╕реЗрдЯреНрд╕ / рдЖрд░рдбрдмреНрд▓реНрдпреВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ 
рдПрдирд┐рдореЗрд╢рди , 
рд╕рд╛рдордЧреНрд░реА , 
рдореЙрдбрд▓ , 
рдкреНрд░реАрдлреИрдм , 
рд╕рдВрд╕рд╛рдзрди , 
рджреГрд╢реНрдп , 
рд▓рд┐рдкрд┐рдпреЛрдВ рдФрд░ 
рдзреНрд╡рдирд┐рдпреЛрдВ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, 
рдЬрд┐рдирдХреЗ рдирд╛рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИрдВред
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ 
рджреГрд╢реНрдпреЛрдВ рдФрд░ 
рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдЖрд░рдбрдмреНрд▓реНрдпреВ / рджреГрд╢реНрдпреЛрдВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ 
рдореЗрди рдЦреЛрд▓реЗрдВред рдЧреЗрдо рдореЛрдб рдореЗрдВ, рдЖрдкрдХреЛ рдордзреНрдпрдпреБрдЧреАрди рдорд╣рд▓ рдХреЗ рдЕрдВрджрд░ рд╣реБрдб рдореЗрдВ рдПрдХ рдЪрд░рд┐рддреНрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
Play рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ 
рдХреИрдорд░рд╛ рдХреИрд░реЗрдХреНрдЯрд░ рдлреНрд░реЗрдо рдХреЛ рдХреИрд╕реЗ рдлрд┐рдЯ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ рдЦреЗрд▓ рдореЗрдВ рдХреЛрдИ рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЙрди рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ
рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ, рд╡рд░реНрдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред 
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдмрд╛рд╣рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЖрдкрдХреЛ 
рд╡рд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рддрд░реНрдХ рд╡рд╛рд▓реЗ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓рд╛ рдПрдХ 
рдШрдЯрдХ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдЖрд░рдбрдмреНрд▓реНрдпреВ / рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рдУрдкрди 
рдХреИрд░реЗрдХреНрдЯрд░реНрд╕ ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдИ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
- Move: рдпрд╣ рдЪрд░рд┐рддреНрд░ рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИ, рдЧрддрд┐ рдФрд░ рдЧрддрд┐ рдХреА- speedрд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреА- speedрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдХреЛрдгреАрдп рдЧрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВред
- ResetMoveParams: рдпрд╣ рд╡рд┐рдзрд┐ рдЪрд╛рд▓ рдФрд░ рдЪрд░рд┐рддреНрд░ рдХреЗ рдХреЛрдгреАрдп рд╡реЗрдЧ рдХреЛ рдЪреЗрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреА рд╣реИред рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╕рд┐рд░реНрдл рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- SetAnimationBool: рдпрд╣ рдорд╛рди рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк Bool рдХреЗ- SetAnimationBoolрдПрдиреАрдореЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
- CheckCollisionOverlap: рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛- Vector3рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ- boolрд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐- TriggerAnimation: рдЗрдирдкреБрдЯ- paramрдПрдиреАрдореЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░- TriggerAnimationрдХрд░рддрд╛ рд╣реИред
- ApplyImpulse: рдкреНрд░рдХрд╛рд░- ApplyImpulseрдХреЗ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░- forceрдмрд░рд╛рдмрд░ рдХреИрд░реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП- ApplyImpulseрдкрд▓реНрд╕- ApplyImpulseред
рдиреАрдЪреЗ рдЖрдк рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдФрд░ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред
рд░рд╛рдЬреНрдп рдорд╢реАрдиреЗрдВ рдХреНрдпрд╛ рд╣реИрдВ
рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рдирдП рд░рд╛рдЬреНрдп рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреЛ 
рд░рд╛рдЬреНрдп рдЖрд░реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рд╛рдЬреНрдп рдЖрд░реЗрдЦ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдФрд░ рдЙрди рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд░рд╛рдЬреНрдп рдХреА рдорд╢реАрдиреЗрдВ
рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдпрд╛ 
FSM (рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди) рдорд╢реАрдиреЛрдВ рдХреЗ рдЪрд╛рд░ рдореБрдЦреНрдп рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ 
рд╣реИ ред рдСрдЯреЛрдореЗрдЯрд╛ рд╕рд░рд▓ рдорд╢реАрдиреЛрдВ рдХреЗ рдЕрдореВрд░реНрдд рдореЙрдбрд▓ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ 
рдСрдЯреЛрдореЗрдЯрд╛ рдХреЗ 
рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╢рд╛рдЦрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
- FSM рдореЗрдВ рдкрд░рд┐рдорд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ ред рдХрд┐рд╕реА рднреА рд╕рдордп , рдЗрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд░рд╛рдЬреНрдп рд╕рдХреНрд░рд┐рдп рд╣реИ ред
- рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд╣ рдХрд┐рд╕ рд░рд╛рдЬреНрдп рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдПрдЧрд╛ред
- рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреЗрдЯ рдирдпрд╛ рд╕рдХреНрд░рд┐рдп рд░рд╛рдЬреНрдп рдмрди рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реИ ред

рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЧреЗрдо рдХреЗ рдЪрд░рд┐рддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдЬрдореАрди рдкрд░ рд╣реИред рдЪрд░рд┐рддреНрд░ 
рд╕реНрдерд╛рдпреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдпрд╣ рдЙрд╕рдХреА 
рд╕рдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреА рдЬрдм рддрдХ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдмрдЯрди рджрдмрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЪрд░рд┐рддреНрд░ рдХреВрдж рдЬрд╛рдПред
рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рд╕реНрдЯреЗрдЯ рдПрдХ рдмрдЯрди рдкреНрд░реЗрд╕ рдХреА рдкрд╣рдЪрд╛рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг 
рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ 
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ 
рдЬрдВрдкрд┐рдВрдЧ рд╕реНрдЯреЗрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЧрддрд┐ рдХреА рдРрд╕реА рдЕрд╡рд╕реНрдерд╛рдУрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд░реНрдг рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд░рд╛рдЬреНрдп рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдлрдПрд╕рдПрдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрдиреЗрдВ
рдПрдлрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдорд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд░рд╛рдЬреНрдп рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рднреМрддрд┐рдХреА рддрд░реНрдХ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк 
рдХреНрд░рд╛рдЙрдЪрд┐рдВрдЧ рдФрд░ 
рд╕реНрдерд╛рдпреА рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдФрд░ рдХреВрдж рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрдИ рдЖрд╡рдХ рдЪрд░ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рд╕реВрдЪрдирд╛ рдЙрддреНрдкрд╛рджрди рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реМрдВрдкрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ 
рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд FSM рдореЗрдВ, рдЙрдирдХреЗ 
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реА 
рдХрдЪреНрдЪреА рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдПрдлрдПрд╕рдПрдо рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕реНрдерд┐рддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ
рдЙрдирдХреА рдкреБрд╕реНрддрдХ 
рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдореЗрдВ: рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рддрддреНрд╡, рдПрд░рд┐рдЪ рдЧрд╛рдорд╛, рд░рд┐рдЪрд░реНрдб рд╣реЗрд▓реНрдо, рд░рд╛рд▓реНрдл рдЬреЙрдирд╕рди рдФрд░ рдЬреЙрди рд╡реНрд▓рд┐рд╕рд┐рдбрд┐рд╕ ( 
рдж рдЧреИрдВрдЧ рдСрдлрд╝ рдлреЛрд░ ) рдиреЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд░рд╛рдЬреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ 
рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛:
тАЬрдЬрдм рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдмрджрд▓рддреА рд╣реИ рддреЛ рдЙрд╕реЗ рд╡рд╕реНрддреБ рдХреЛ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдиреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдмрджрд▓ рджреА рд╣реИред тАЭ
рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдЖрдВрджреЛрд▓рди рдХреЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ, рдПрдХ рдЗрди-рдЧреЗрдо рдЗрдХрд╛рдИ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИред
- рдпрд╣ рд╡рд░реНрдЧ рдПрдХ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЪрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рд░рд╛рдЬреНрдп рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдЖрд╡рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЗрд╕ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рднреАрддрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд░рд╛рдЬреНрдп рд╕рдВрдХреНрд░рдордгреЛрдВ рдХреЛ рднреА рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ 
рд╡рд░реНрддрдорд╛рди рд░рд╛рдЬреНрдп рдЪрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдПрдХ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ "рд╕реНрдерд┐рддрд┐" рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╕рд╛рд░ рд╣реИред
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд 
рд╡рд░реНрдг рд╡рд░реНрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдЙрд╕реЗ рдЦреБрдж рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ!
рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рддреАрди рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд░рд╛рдЬреНрдп рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:
- рдкреНрд░рд╡реЗрд╢ : рдпрд╣ рд╡рд╣ рдХреНрд╖рдг рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЗрдХрд╛рдИ рдХрд┐рд╕реА рд░рд╛рдЬреНрдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИ рдФрд░ рд░рд╛рдЬреНрдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╕рдордп рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
- рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ : рдЗрдирдкреБрдЯ рдХреЗ рд╕рдорд╛рди - рд╕рднреА рд░реАрд╕реЗрдЯ рдСрдкрд░реЗрд╢рди рдпрд╣рд╛рдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдЕрдкрдбреЗрдЯ рд▓реВрдк : рдпрд╣рд╛рдВ рдореВрд▓ рдЕрджреНрдпрддрди рддрд░реНрдХ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдЗрд╕реЗ рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рднреМрддрд┐рдХреА рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдХреНрд░ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдХреНрд░ред

рд░рд╛рдЬреНрдп рдФрд░ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
рдЖрд░рдбрдмреНрд▓реНрдпреВ / рд▓рд┐рдкрд┐рдпреЛрдВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ 
StateMachine.cs рдЦреЛрд▓реЗрдВред
рд░рд╛рдЬреНрдп рдорд╢реАрди , рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдореВрд░реНрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 
CurrentState рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рд░рд╛рдЬреНрдп рдорд╢реАрди рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред
рдЕрдм, 
рд░рд╛рдЬреНрдп рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП 
RW / рд▓рд┐рдкрд┐рдпреЛрдВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ IDE рдореЗрдВ 
State.cs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреЛрд▓реЗрдВред
рд░рд╛рдЬреНрдп рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ 
рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ 
рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рднреА 
рд╡рд░реНрдЧ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рд╣реИред
DisplayOnUI рдХреЗрд╡рд▓ рдСрди-рд╕реНрдХреНрд░реАрди UI рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдпрд╣ рд╕рдордЭ рд▓реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ 
UIManager.Alignment рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ 
UIManager.Alignment рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ 
Left рдпрд╛ 
Right рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рдПрдВ рдпрд╛ рджрд╛рдПрдВ рддрд▓ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЗ рдирд╛рдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдЪрд░, 
character рдФрд░ 
stateMachine ред 
character рдЪрд░ 
рдЪрд░рд┐рддреНрд░ рд╡рд░реНрдЧ рдХреА рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ 
stateMachine рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ 
рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреА рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд░рд╛рдЬреНрдп рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдирд┐рд░реНрдорд╛рддрд╛ 
character рдФрд░ 
stateMachine рдмрд╛рдВрдзрддрд╛ рд╣реИред
рдПрдХ рджреГрд╢реНрдп рдореЗрдВ 
Character рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд░рд╛рдЬреНрдпреЛрдВ рдФрд░ рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕реЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдм 
State.cs рдореЗрдВ рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ:
 public virtual void Enter() { DisplayOnUI(UIManager.Alignment.Left); } public virtual void HandleInput() { } public virtual void LogicUpdate() { } public virtual void PhysicsUpdate() { } public virtual void Exit() { } 
рдпреЗ рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдореБрдЦ рд╕реНрдерд┐рддрд┐ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЬрдм 
рд░рд╛рдЬреНрдп рдорд╢реАрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрдХреНрд░рдордг рдХрд░рддреА рд╣реИ, рддреЛ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП 
Exit рдФрд░ рдирдпрд╛ 
рд╕рдХреНрд░рд┐рдп рд░рд╛рдЬреНрдп Enter ред
HandleInput , 
LogicUpdate рдФрд░ 
PhysicsUpdate рдПрдХ рд╕рд╛рде 
рдЕрдкрдбреЗрдЯ рд▓реВрдк рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред 
HandleInput рдЦрд┐рд▓рд╛рдбрд╝реА рдЗрдирдкреБрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред 
LogicUpdate рдмреБрдирд┐рдпрд╛рджреА рддрд░реНрдХ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ 
PhyiscsUpdate рддрд░реНрдХ рдФрд░ рднреМрддрд┐рдХреА рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
рдЕрдм 
StateMachine.cs рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ, рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ:
 public void Initialize(State startingState) { CurrentState = startingState; startingState.Enter(); } public void ChangeState(State newState) { CurrentState.Exit(); CurrentState = newState; newState.Enter(); } 
Initialize рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 
CurrentState рд╕реЗрдЯ рдХрд░рдХреЗ рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ 
Initialize рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП 
Enter рдХреЙрд▓ 
Enter ред рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╕рдХреНрд░рд┐рдп рд░рд╛рдЬреНрдп рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП, рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред
ChangeState рд░рд╛рдЬреНрдп рд╕рдВрдХреНрд░рдордг рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ 
рд╣реИ ред рдпрд╣ 
CurrentState рд╕рд╛рде рдЕрдкрдиреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреБрд░рд╛рдиреЗ 
CurrentState рд▓рд┐рдП 
Exit рдХрд╣рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдпрд╣ 
Enter for 
newState рдХрд╣рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо 
рд░рд╛рдЬреНрдп рдФрд░ 
рд░рд╛рдЬреНрдп рдорд╢реАрди рд╕реЗрдЯ рдХрд░рддреЗ 
рд╣реИрдВ ред
рдореЛрд╢рди рд╕реНрдЯреЗрдЯреНрд╕ рдмрдирд╛рдирд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рд╛рдЬреНрдп рдЖрд░реЗрдЦ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЦреЗрд▓ рдХреЗ рд╕рд╛рд░ 
рдХреЗ рдЖрдВрджреЛрд▓рди рдХреА рд╡рд┐рднрд┐рдиреНрди 
рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо 
FSM рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП 
рдЖрдВрджреЛрд▓рди рдХреЗ рд▓рд┐рдП "рд╕реНрдерд┐рддрд┐" рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
рдЖрдВрджреЛрд▓рди рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЕрд░реНрдерд╛рддреН 
рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ , 
рдбрдХрд┐рдВрдЧ рдФрд░ 
рдЬрдВрдкрд┐рдВрдЧ , рд╕рд╛рде рд╣реА рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдХрд╛рд░рдг рдХреИрд╕реЗ рдмрдирддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдПрдлрдПрд╕рдПрдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ 
рдЧреНрд░рд╛рдЙрдВрдбреЗрдб рдбрдХрд┐рдВрдЧ рдФрд░ 
рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рдЙрдк-рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдк-рд░рд╛рдЬреНрдп 
рд╣реИ ред
рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВ рдФрд░ 
рдЖрд░рдбрдмреНрд▓реНрдпреВ / рд▓рд┐рдкрд┐рдпреЛрдВ / рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдЬрд╛рдПрдВ ред рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ рдХрдИ рд╕реА # рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓реЗрдВрдЧреА, рдЬрд┐рдирдХреЗ рдирд╛рдо 
рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдВрдЧреЗред
рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ 
State рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпреЗ рд╡рд░реНрдЧ рдЙрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЕрдм 
RW / Scripts рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ 
Character.cs рдХреЛ рдЦреЛрд▓реЗрдВред
#region Variables рдлрд╝рд╛рдЗрд▓ рдХреЗ рдКрдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
 public StateMachine movementSM; public StandingState standing; public DuckingState ducking; public JumpingState jumping; 
рдпрд╣ 
movementSM рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ 
Character рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рддрд░реНрдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рддреАрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рднреА рдЬреЛрдбрд╝реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдореЗрдВ 
#region MonoBehaviour Callbacks рдЬрд╛рдПрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 
MonoBehaviour рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдлрд┐рд░ рд╕рд╣реЗрдЬреЗрдВ
 private void Start() { movementSM = new StateMachine(); standing = new StandingState(this, movementSM); ducking = new DuckingState(this, movementSM); jumping = new JumpingState(this, movementSM); movementSM.Initialize(standing); } private void Update() { movementSM.CurrentState.HandleInput(); movementSM.CurrentState.LogicUpdate(); } private void FixedUpdate() { movementSM.CurrentState.PhysicsUpdate(); } 
- StartрдХреЛрдб рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ- movementSMрдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЧрддрд┐ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рднреА рддреНрд╡рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдореЛрд╢рди рд╕реНрдЯреЗрдЯреНрд╕ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо- thisрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП- CharacterрдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде- movementSMрдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП- movementSMрдФрд░- StandingрдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХрд╣рддреЗ рд╣реИрдВред
- Updateрд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо- HandleInputрдФрд░- LogicUpdateрдХреЛ- CurrentStateрдорд╢реАрди рдХреЗ- CurrentStateрдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣,- FixedUpdateрд╣рдо- PhysicsUpdateрдХреЛ- CurrentStateрдорд╢реАрди рдХреЗ- PhysicsUpdateрд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рдХреНрд░рд┐рдп рд░рд╛рдЬреНрдп рдХреЛ рдХрд╛рд░реНрдп рд╕реМрдВрдкрддрд╛ рд╣реИ; рдпрд╣ "рд╕реНрдерд┐рддрд┐" рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЕрд░реНрде рд╣реИред
рдЕрдм рд╣рдореЗрдВ рдЧрддрд┐ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рдЕрдВрджрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдВрднрд╛рд▓реЛ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реЛрдВрдЧреЗ!
рд╕реНрдерд╛рдпреА рдлрд░реНрдо
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ 
RW / рд▓рд┐рдкрд┐рдпреЛрдВ / рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд▓реМрдЯреЗрдВред
рдЧреНрд░рд╛рдЙрдВрдбреЗрдб рдЦреЛрд▓реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИ рдЬреЛ 
State рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдЖрдк рдЕрдиреНрдп рд╕рднреА 
рд░рд╛рдЬреНрдп рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рджреЗрдЦреЗрдВрдЧреЗред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
 public override void Enter() { base.Enter(); horizontalInput = verticalInput = 0.0f; } public override void Exit() { base.Exit(); character.ResetMoveParams(); } public override void HandleInput() { base.HandleInput(); verticalInput = Input.GetAxis("Vertical"); horizontalInput = Input.GetAxis("Horizontal"); } public override void PhysicsUpdate() { base.PhysicsUpdate(); character.Move(verticalInput * speed, horizontalInput * rotationSpeed); } 
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
- рд╣рдо рдореВрд▓ рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЕрдзрд┐рд░реЛрдкрд┐рдд рд╡рд┐рдзрд┐ рд╕реЗ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде baseрд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред
- рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐, EnterрдЙрдирдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗverticalInputhorizontalInputрдФрд░verticalInputрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
- рдЕрдВрджрд░ рд╕реЗ Exitрд╣рдо, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд╛рдЬреНрдп рдореЗрдВ рдмрджрд▓рддреЗ рд╕рдордп рд░реАрд╕реЗрдЯ рдХрд░рдиреЗResetMoveParamsрд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
- HandleInputрд╡рд┐рдзрд┐ рдореЗрдВ,- horizontalInputрдЗрдирдкреБрдЯ рдФрд░ рд╡рд░реНрдЯрд┐рдХрд▓ рдЗрдирдкреБрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЗрдирдкреБрдЯ рдЕрдХреНрд╖реЛрдВ- HandleInputрдореВрд▓реНрдпреЛрдВ рдХреЛ- HandleInputрд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдбрдмреНрд▓реНрдпреВ , рдП , рдПрд╕ рдФрд░ рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░рд┐рддреНрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред
- PhysicsUpdateрд╣рдо рдПрдХ- PhysicsUpdateрдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ- verticalInputрдЧрддрд┐ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ- horizontalInput- PhysicsUpdateрдФрд░- verticalInputрдЪрд░ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЪрд░- speedрдЧрддрд┐ рдХреА рдЧрддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░- rotationSpeed, рдХреЛрдгреАрдп рд╡реЗрдЧред
рдЕрдм 
Standing.cs рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ 
Grounded рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рдХрд╣рд╛, 
рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рдЧреНрд░рд╛рдЙрдВрдбреЗрдб рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕ рд░рд┐рд╢реНрддреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдо рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 
override рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ:
 public override void Enter() { base.Enter(); speed = character.MovementSpeed; rotationSpeed = character.RotationSpeed; crouch = false; jump = false; } public override void HandleInput() { base.HandleInput(); crouch = Input.GetButtonDown("Fire3"); jump = Input.GetButtonDown("Jump"); } public override void LogicUpdate() { base.LogicUpdate(); if (crouch) { stateMachine.ChangeState(character.ducking); } else if (jump) { stateMachine.ChangeState(character.jumping); } } 
- Enterрд╣рдо- Groundedрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЪрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред- speedрдФрд░- RotationSpeedрдЪрд░рд┐рддреНрд░ рдХреЗ- MovementSpeedрдФрд░- RotationSpeedрд▓рд╛рдЧреВ рдХрд░реЗрдВред рдлрд┐рд░ рд╡реЗ рдХреНрд░рдорд╢рдГ рдЖрдВрджреЛрд▓рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐ рдФрд░ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдЧрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
 
 рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,- crouchрдФрд░- jumpрдЗрдирдкреБрдЯ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░ рдЭреВрдареЗ рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
- HandleInputрдЕрдВрджрд░,- crouchрдФрд░- jumpрд╡реИрд░рд┐рдПрдмрд▓- HandleInputрдФрд░- HandleInputрд▓рд┐рдП рдкреНрд▓реЗрдпрд░ рдЗрдирдкреБрдЯ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдореБрдЦреНрдп рджреГрд╢реНрдп рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рд╢рд┐рдлреНрдЯ рдХреБрдВрдЬреА рджрдмрд╛рддрд╛ рд╣реИ , рддреЛ рд╕реНрдХреНрд╡реИрдЯ рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА- jumpрд▓рд┐рдП рд╕реНрдкреЗрд╕ рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- LogicUpdateрд╣рдо рдЯрд╛рдЗрдк- boolрдХреЗ- crouchрдФрд░- jumpрдЪрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐- crouchрд╕рддреНрдп рд╣реИ, рддреЛ- movementSM.CurrentState- character.duckingрдмрджрд▓ рдЬрд╛рддрд╛- character.duckingред рдпрджрд┐- jumpрд╕рд╣реА рд╣реИ, рддреЛ рд░рд╛рдЬреНрдп- character.jumpingрдмрджрд▓рддрд╛ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ, рдлрд┐рд░ 
рдкреНрд▓реЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЖрдк рдЪрд╛рдмрд┐рдпрд╛рдБ 
рдбрдмреНрд▓реНрдпреВ , 
рдП , 
рдПрд╕ рдФрд░ 
рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреГрд╢реНрдп рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд╕рдХрддреЗ рд╣реИрдВ 
ред рдпрджрд┐ рдЖрдк 
рд╢рд┐рдлреНрдЯ рдпрд╛ 
рд╕реНрдкреЗрд╕ рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЪрд░рд┐рддреНрд░ рдХреЗ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреА рдКрдВрдЪрд╛рдИ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЪрд░рд┐рддреНрд░ рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдХреНрд╡рд╛рдЯрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдо рдЯреЗрдмрд▓ рдХреЗ рдиреАрдЪреЗ рдЪрдврд╝рддреЗ рд╣реИрдВ
Ducking.cs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреЛрд▓реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 
Ducking рдХреЗ рд╕рдорд╛рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ 
Ducking рдХреЛ 
Grounded рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 
override рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ:
 public override void Enter() { base.Enter(); character.SetAnimationBool(character.crouchParam, true); speed = character.CrouchSpeed; rotationSpeed = character.CrouchRotationSpeed; character.ColliderSize = character.CrouchColliderHeight; belowCeiling = false; } public override void Exit() { base.Exit(); character.SetAnimationBool(character.crouchParam, false); character.ColliderSize = character.NormalColliderHeight; } public override void HandleInput() { base.HandleInput(); crouchHeld = Input.GetButton("Fire3"); } public override void LogicUpdate() { base.LogicUpdate(); if (!(crouchHeld || belowCeiling)) { stateMachine.ChangeState(character.standing); } } public override void PhysicsUpdate() { base.PhysicsUpdate(); belowCeiling = character.CheckCollisionOverlap(character.transform.position + Vector3.up * character.NormalColliderHeight); } 
- EnterрдЕрдВрджрд░- Enterрд╕реНрдХреНрд╡рд╛рдЯ рдПрдиреАрдореЗрд╢рди рдЯреЙрдЧрд▓ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ- EnterрдкреИрд░рд╛рдореАрдЯрд░ рдХреНрд░рд╛рдЙрдЪ рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд╡рд╛рдЯ рдПрдиреАрдореЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред- character.CrouchSpeedрдФрд░- character.CrouchRotationSpeedрдЧреБрдгреЛрдВ рдХреЛ- speedрдФрд░- rotationрдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╕реНрдХреНрд╡рд╛рдЯ рдореЗрдВ рдЪрд▓рддреЗ рд╕рдордп рдЪрд░рд┐рддреНрд░ рдХреА рдЧрддрд┐ рдФрд░ рдХреЛрдгреАрдп рдЧрддрд┐ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред
 
 рдЕрдЧрд▓рд╛- character.CrouchColliderHeightCrouchColliderHeight рдЪрд░рд┐рддреНрд░ рдХреЗ рдХреЛрд▓рд╛рдЗрдбрд░ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд╡реАрдЯрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд╛рдВрдЫрд┐рдд рдХреЛрд▓рд╛рдЗрдбрд░ рдХреА рдКрдБрдЪрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ,- belowCeilingрджрд┐рдпрд╛ рдЧрдпрд╛ рдЧрд▓рдд рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- рдЗрдирд╕рд┐рдЯ рд╕реЗ Exitрд╕реНрдХреНрд╡рд╛рдЯ рдПрдиреАрдореЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рд╣реИред рдпрд╣ рд╕реНрдХреНрд╡рд╛рдЯ рдПрдиреАрдореЗрд╢рди рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрд▓рд╛рдЗрдбрд░ рдХреА рдКрдБрдЪрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗcharacter.NormalColliderHeightрджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛character.NormalColliderHeightред NormalColliderHeightред
- HandleInputрдЕрдВрджрд░- HandleInputрдЪрд░- crouchHeldрдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЗрдирдкреБрдЯ рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореБрдЦреНрдп рджреГрд╢реНрдп рдореЗрдВ, Shift рдХреЛ- crouchHeldрдХреЛ рд╕рддреНрдп- crouchHeldрд╣реИред
- PhysicsUpdateрдЕрдВрджрд░- PhysicsUpdateрдЪрд░ рдХреЗ- belowCeilingрдЪрд░ рдХреЛ- belowCeilingрдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдкрд╛рд╕ рдХрд░рдХреЗ рдПрдХ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдг рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдореБрдЦ рдХреЗ рд╕рд╛рде- CheckCollisionOverlapрд╡рд┐рдзрд┐ рд╣реИред рдпрджрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЯрдХреНрдХрд░ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪрд░рд┐рддреНрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЫрдд рдХреЗ рдиреАрдЪреЗ рд╣реИред
- рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ, LogicUpdateрдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛crouchHeldрдпрд╛ рдЙрд╕рд╕реЗbelowCeilingрд╣реИред рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рддреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛmovementSM.CurrentStateред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ 
Play рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЕрдм рдЖрдк рджреГрд╢реНрдп рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк 
Shift рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрдг рдиреАрдЪреЗ рдмреИрда рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдк рд╕реНрдХреНрд╡рд╛рдЯ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдордВрдЪ рдХреЗ рдиреАрдЪреЗ рднреА рдЪрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдиреАрдЪреЗ 
рд╢рд┐рдлреНрдЯ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЪрд░рд┐рддреНрд░ рддрдм рддрдХ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рд░рд╣реЗрдЧрд╛, рдЬрдм рддрдХ рд╡рд╣ рдЕрдкрдирд╛ рдЖрд╢реНрд░рдп рдирд╣реАрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ред
рдЪрдврд╝рддрд╛ рд╣реИ!
рдЬрдВрдкрд┐рдВрдЧ рдЦреЛрд▓реЗрдВред рдЖрдкрдХреЛ 
Jump рдирд╛рдордХ рдПрдХ рд╡рд┐рдзрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ; рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЪрд░рд┐рддреНрд░ рднреМрддрд┐рдХреА рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдХрд░ рдХреВрдж рд╕рдХреЗред
рдЕрдм рд╕рд╛рдорд╛рдиреНрдп 
override рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрдЪрд╛рдПрдВ
 public override void Enter() { base.Enter(); SoundManager.Instance.PlaySound(SoundManager.Instance.jumpSounds); grounded = false; Jump(); } public override void LogicUpdate() { base.LogicUpdate(); if (grounded) { character.TriggerAnimation(landParam); SoundManager.Instance.PlaySound(SoundManager.Instance.landing); stateMachine.ChangeState(character.standing); } } public override void PhysicsUpdate() { base.PhysicsUpdate(); grounded = character.CheckCollisionOverlap(character.transform.position); } 
- EnterрдЕрдВрджрд░- Enterрд╕рд┐рдВрдЧрд▓рдЯрди- SoundManagerрдХреА рдЖрд╡рд╛рдЬ рдмрдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░- groundedрдХреЛ рдЙрд╕рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЦрд┐рд░ рдореЗрдВ- JumpрдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- PhysicsUpdateрдЕрдВрджрд░- PhysicsUpdateрдЪрд░рд┐рддреНрд░ рдХреЗ рдкреИрд░реЛрдВ рдХреЗ рдЖрдЧреЗ- PhysicsUpdateрдмрд┐рдВрджреБ- PhysicsUpdateрдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬрдм рдЪрд░рд┐рддреНрд░ рдЬрдореАрди рдкрд░ рд╣реИ, рддреЛ- groundedрдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- LogicUpdate, рдпрджрд┐- groundedрд╕рд╣реА рд╣реИ, рддреЛ рд╣рдо- TriggerAnimationрдПрдиреАрдореЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдПрдирд┐рдореЗрд╢рди рдХрд╣рддреЗ рд╣реИрдВ, рдЯрдЪрдбрд╛рдЙрди рд╕рд╛рдЙрдВрдб рдмрдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░- movementSM.CurrentStateрдореЗрдВ- character.standingрдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛- character.standingред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрд░ рд╣рдордиреЗ 
"рд░рд╛рдЬреНрдп" рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ FSM рд╡рд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░рд╛ рдХрд░ 
рд▓рд┐рдпрд╛ рд╣реИ ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕реЗ рдЪрд▓рд╛рдПрдВред рдХреИрд░реЗрдХреНрдЯрд░ рдЬрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 
рд╕реНрдкреЗрд╕ рджрдмрд╛рдПрдВред
рдЖрдЧреЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ?
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдПрдХ рдорд╕реМрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдПрдХ рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред
рдЗрд╕рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВред рд╕рдорд╡рд░реНрддреА рд░рд╛рдЬреНрдп рдорд╢реАрдиреЗрдВ рдФрд░ рдкреБрд╢рдбрд╛рдЙрди рдСрдЯреЛрдореИрдЯрди рдорд╢реАрдиреЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреА рд╣реИрдВред рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░реЙрдмрд░реНрдЯ рдирд┐рд╕реНрдЯреНрд░реЛрдо 
рдЧреЗрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдЯрд░реНрди рдХреА рдкреБрд╕реНрддрдХ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреЗрдо рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ 
рд╡реНрдпрд╡рд╣рд╛рд░ рдкреЗрдбрд╝реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреЛрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред