рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Google рдиреЗ рдЬрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЗрд╕рдХреА рд╕рд░рд▓рддрд╛ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдлрдПрд╕рдПрдо рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХрд╛ рдХрдЯреМрддреА рд▓реЗрдЦрдХ рдХреЗ рдореВрд▓ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЧреНрд░реАрд╕ рдХреЗ рд▓реЗрдЦрдХ рддреЛрд╕реЛрд╕ рдЬрд┐рдпрд╛рдирдХреЛрдкрд╛рдЙрд▓реЛрд╕ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрднреА-рдХрднреА рдЕрдкрдиреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдкреВрд░реНрдгрддрд╛рд╡рд╛рджрд┐рдпреЛрдВ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред
рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреНрдпрд╛ рд╣реИ?
рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рдЧреЗрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдХрд╛рдЗрдпреЛрдВ рдпрд╛ рдХреБрдЫ рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ред
рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди (рдмреБрд░реНрдЬреБрдЖ рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдпрд╛ FSM) рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрд░реЗрдЦреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ рдФрд░ рдлрд┐рд░ рдХреНрд░рдорд╛рджреЗрд╢рд┐рдд рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
AI-depot.com рд╕рд╛рдЗрдЯ (рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА AI рд╕рд╛рдЗрдЯ) рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдореЗрдВ рдЪрд╛рд░ рдореБрдЦреНрдп рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ:
- рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИрдВ рдФрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддреА рд╣реИрдВ
- рд░рд╛рдЬреНрдп рд╕рдВрдХреНрд░рдордг рдЬреЛ рдПрдХ рд░рд╛рдЬреНрдп рд╕реЗ рджреВрд╕рд░реЗ рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВ
- рдирд┐рдпрдо рдФрд░ рд╢рд░реНрддреЗрдВ рдЬреЛ рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдкреВрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
- рдмрд╛рд╣рд░ рдпрд╛ рдЕрдВрджрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЗрдирдкреБрдЯ рд╕реНрдЯреЗрдЯреНрд╕, рдЬреЛ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ
рдореИрдВ рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реИ, рдФрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрдИ рд▓рд┐рдВрдХ рднреА рд╣реИрдВред
рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ?
рдореБрдЦреНрдп рдЪрд░рд┐рддреНрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдореИрдВ рдЕрднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдПрдлрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред C # рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдлрд┐рд▓рд╣рд╛рд▓, рдХреЛрдб рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рдЬреЛ рдПрдлрдПрд╕рдПрдо рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
- рдПрдХ рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬреЛ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рдЬрдм рдЗрдирдкреБрдЯ рдИрд╡реЗрдВрдЯ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдЙрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдлрдПрд╕рдПрдо рдХреЛ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдпрджрд┐ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╕рдВрднрд╡ рд╣реИ, рддреЛ рд░рд╛рдЬреНрдп рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реА рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ, рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рдПрдХреНрд╕рдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реЛ рдФрд░ рдирдП рд░рд╛рдЬреНрдпреЛрдВ рдФрд░ рд╕рдВрдХреНрд░рдордгреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗред

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

рдКрдкрд░ рджрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдЖрд░реЗрдЦ рдореЗрдВ, рдЖрдк рд╕реНрдЯреЗрдЯрдЯреНрд░рд╛рдВрд╕ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ IEquatable рдФрд░ FiniteStateMachine рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реАред рджреЛрдиреЛрдВ рд╡рд░реНрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд░рд╛рдЬреНрдп рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдирдо рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕реНрдЯреЗрдЯрдЯреНрд░рд╛рдВрд╕рд┐рд╢рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕реА # рдЯрдкрд▓ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрд╕рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - System.Collections.Generic.KeyValuePair <K, V> рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ K рдФрд░ V рд╕рдВрднрд╡ рд░рд╛рдЬреНрдп рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ KeyValuePair рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрдпреВрдкрд▓ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рдорд┐рд▓реЗрдЧрд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрд╕реА рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЖрдкрдХреЛ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдЧрд╛ред рдмрд╕ рдЗрд╕реЗ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ рдХрд┐ рдПрдлрдПрд╕рдПрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреА рд╡рд╕реНрддреБ рдХреЗ рд╕рднреА рд░рд╛рдЬреНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ FiniteStateMachine рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВред
// Add the possible states here public enum eCharacterState { IDLE, RUN, // ... }; public class CharacterFSM : FiniteStateMachine<eCharacterState> {};
рдЖрдкрдХреЛ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ Run (), Idle (), IdleJump () рдФрд░ рдЕрдиреНрдп рд╣реИрдВред рдлрд┐рд░ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд╛рдВрдЫрд┐рдд рдмрджрд▓рд╛рд╡ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП AddTransition () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рдЖрдк рдЗрдЪреНрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо () рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореЗрд░реЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рднрд╛рдЧ рдХреЗ рдиреАрдЪреЗ рдХрд╛ рдХреЛрдб рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдПрдлрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред
public class Player : CatGameItem { // ... public CharacterFSM mFSM; void Start () { mFSM = new CharacterFSM(); // Add state transitions here mFSM.AddTransition(eCharacterState.IDLE, eCharacterState.RUN, Run); mFSM.AddTransition(eCharacterState.RUN, eCharacterState.IDLE, Idle); // This calls the Run() function while on run state. // I will probably replace it with with a state callback or something similar sometime in the future to avoid calling TryGetValue all the time. mFSM.AddTransition(eCharacterState.RUN, eCharacterState.RUN, Run); // ... } // FSM Delegates void Run() { //Debug.Log("RUN!"); float curMoveSpeed = Controller.GetGroundSpeed(); AnimationController.SetSpeed("Cat_Run", curMoveSpeed/RunSpeed); AnimationController.Play("Cat_Run"); } void Idle() { AnimationController.Play("Cat_Idle_Breath"); } // ... void UpdateInput() { mCurAxisInput.x = Input.GetAxis("LeftAxisH"); // Get Horizontal axis (XBox360 xAxis OR 'A', 'D') mCurAxisInput.y = Input.GetAxis("LeftAxisV"); // Get Vertical axis (XBox360 yAxis OR 'W', 'S') } void UpdateStateMachine() { // Based on the input events, advance to desired state // Run, Idle if (mCurAxisInput.magnitude > 0) mFSM.Advance(eCharacterState.RUN); else mFSM.Advance(eCharacterState.IDLE); // ... } void FixedUpdate() { // Update the state machine here UpdateStateMachine(); } void Update () { // Update user input UpdateInput(); UpdateCharacterMovement(); } }
рдПрдлрдПрд╕рдПрдо рд╕реНрд░реЛрддрд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦ рдХреЗ рд▓рд┐рдВрдХ:
https://en.wikipedia.org/wiki/Finite-state_machinehttp://ai-depot.com/FiniteStateMachines/FSM.htmlhttp://jessewarden.com/2012/07/finite-state-machines-in-game-development.htmlhttp://unitygems.com/fsm2/рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ:
рддрд╕реЛрд╕ рдЬрд┐рдпрд╛рдирдирдХреЛрдкреЛрд▓рд╕ ред