рдпреВрдирд┐рдЯреА 3 рдбреА рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЙрд╡рд░ рд░рдХреНрд╖рд╛ рдЦреЗрд▓ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рднрд╛рдЧ рдПрдХ

рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ! рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдордп рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд▓реЗрдЦ рдПрдХ рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдпреВрдирд┐рдЯреА 3 рдбреА рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╛рда рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдПрдХ рдмрд╣реБрддрд╛рдпрдд рд╣реЛрдЧреАред

рднрд╛рдЧ рджреЛ

рдХрд┐рд╕реА рдХреЛ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА - рдХрдЯреМрддреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!


рдкрд╣рд▓рд╛ рдХрджрдо


рдЖрдзрд╛рд░ рджреГрд╢реНрдп

рдпрд╣ рдПрдХ рд╕рддрд╣ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬрд┐рд╕ рдкрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдмрдВрджреВрдХреЗрдВ, рдореЙрдм рдФрд░ рдЕрдзрд┐рдХ рдЬрдЧрд╣ рд▓реЗрдВрдЧреЗред Terrain рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ -> Terrain рдмрдирд╛рдПрдБред рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдЯреЗрд░реЗрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдлрд┐рд░ рдЧреБрдгреЛрдВ рдореЗрдВ рдмреНрд░рд╢ рдХреА рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ -> рдиреАрдЪреЗ рдХреЗрд╡рд▓ рдмрдирд╛рд╡рдЯ рдЬреЛрдбрд╝реЗрдВред
рдПрдХ рдмрдирд╛рд╡рдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд┐рдбрд╝рдХреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╡реГрддреНрдд рд╣реИ, рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝ рдмрдЯрди рдХрд╛ рдПрдХ рд╕реАрдзрд╛ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рдЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реА рд╕рддрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдирд╛рд╡рдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ)ред


рдмрдирд╛рд╡рдЯ рдЪрдпрди рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░реЗрдВ, рдмрдирд╛рд╡рдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ, рдЗрд╕рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╡реЛрдЗрд▓рд╛, рд╣рдорд╛рд░реА рдЯреЗреНрд░рдирд░ рд╣рдорд╛рд░реА рдЪреБрдиреА рд╣реБрдИ рдмрдирд╛рд╡рдЯ рдореЗрдВ рдЪрд┐рддреНрд░рд┐рдд рд╣реИред рдЖрдк рдПрдХ рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрдзрд┐рдХ рдмрдирд╛рд╡рдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрдЯрди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ, рдХреБрдЫ рд╕реНрд▓рд╛рдЗрдб, рдЫреЗрдж рдФрд░ рдЗрддрдиреЗ рдкрд░ рдирд┐рд░реНрдорд╛рдг;)

рдмрдВрджреВрдХ рдЬреЛрдбрд╝реЗрдВ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЯреЗрд░реАрдирд░ рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рдЦреЗрд▓рд╛ рд╣реИ? рдорд╣рд╛рди, рдЧрдВрднреАрд░ рдЦрд┐рд▓реМрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп: рд╣рдорд╛рд░реА рдПрдХрдорд╛рддреНрд░ рдмрдВрджреВрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (5 рдПрдордмреА, рд▓рд┐рдВрдХ )
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдПрд╕реЗрдЯреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдпрд╛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ, рдкреНрд░рднрд╛рд╡ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред
рд╣рдореЗрдВ рдПрдХ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЙрд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдмрд╕реЗ рдКрдкрд░ рдПрдХ Create рдмрдЯрди рд╣реИред рдЗрд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдкреНрд░реАрдлреИрдм рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рджреЗрдВред рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ Create -> Prefab рдЪреБрдиреЗрдВред рдФрд░ рдЙрд╕рдХрд╛ рдирд╛рдо рдЧрди_рдкрд░рдлреИрдм рд╣реЛрдЧрд╛ред

рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд: рдкреНрд░реАрдлрд╝реИрдм рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ (рдПрд╕) рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рднреА рдЬрд▓реНрджреА рд╕реЗ рдордВрдЪ рдкрд░ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛)ред рджреГрд╢реНрдп рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдкреВрд░реНрд╡рдирд┐рд░реНрдорд┐рдд рдиреАрд▓реЗ рд╣реИрдВред

рддреЛрдк рдлрд╝рд╛рдЗрд▓ (рддреЛрдк 2) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ - рдмрдВрджреВрдХ рдЖрдпрд╛рдд рдкреНрд▓рдЧрдЗрди рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
рд╕реНрдХреЗрд▓ рдлреИрдХреНрдЯрд░ 0.1 рдкрд░ рд╕реЗрдЯ
рдЬрдирд░реЗрдЯ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рд╣рдо рдмрд╛рдХреА рдХреЛ рдирд╣реАрдВ рдЫреВрддреЗ рд╣реИрдВ, рдмрд╕ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдмрдЯрди рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдмрдВрджреВрдХ рдХреЛ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рдЖрдХрд╛рд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдкреНрд░рд╛рд░рдВрднрд┐рдХ 0.01 рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рдФрд░ рдЗрдХрд╛рдИ рдмрд╣реБрдд рд╡рд┐рд╢рд╛рд▓ рд╣реИ), рдФрд░ рдХреЛрд▓рд╛рдбрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдмрдВрджреВрдХ рднреВрдорд┐рдЧрдд рди рд╣реЛред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╣рдорд╛рд░реА рддреЛрдк (рддреЛрдк 2) рдХреЛ рддрд╛рдЬрд╛ рдмрдирд╛рдП рдЧрдП рдкреНрд░реАрдлреИрдм (рдЧрди_рдкрд░рдлреИрдм) рдкрд░ рдЦреАрдВрдЪреЗрдВред

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

рдореЙрдм рдмрдирд╛рдПрдБ


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЯреАрдбреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореЙрдмреНрд╕ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд░рд▓ рдЧреЗрдВрдж рд╣реЛрдВрдЧреЗред 3 рдбреА рдореЙрдбрд▓рд┐рдВрдЧ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдмрд┐рдирд╛ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдирд╛ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдирд╛рд╢рдкрд╛рддреА рдХрд╛ рдЧреЛрд▓рд╛ред
GameObject рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ -> рдЕрдиреНрдп рдмрдирд╛рдПрдВ -> рдХреНрд╖реЗрддреНрд░ред рд╕реНрдлреЗрдпрд░ рдирд╛рдордХ рдПрдХ рд╡рд╕реНрддреБ рджреГрд╢реНрдп рдкрд░ рдФрд░ рд╡рд╕реНрддреБ рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдПрдХ рдЬреНрдЮрд╛рдд рддрд░реАрдХреЗ рд╕реЗ, рдореЙрдиреНрд╕реНрдЯрд░ 01 рдирд╛рдо рдХреЗ рд╕рд╛рде рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реАрдлрд╝реИрдм рдмрдирд╛рдПрдВ рдФрд░ рдкреНрд░реАрдлрд╝реИрдм рдкрд░ рд╣рдорд╛рд░реЗ рд░рд╛рдХреНрд╖рд╕ рдХреЛ рдЦреАрдВрдЪреЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд░рд╛рдХреНрд╖рд╕ рдХреЛ рджреГрд╢реНрдп рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреЛрдб рд╕реЗ рд╕реАрдзреЗ рд╕реНрдкреЙрди рдХрд░реЗрдВрдЧреЗред

рдХрд╛рд░реНрдб, рдкреИрд╕рд╛, рджреЛ рдЪрдбреНрдбреА


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд╕реАрдзреЗ рдордВрдЪ рдкрд░ рдкреНрд░реАрдлреИрдм рдмрдВрджреВрдХ рдЦреАрдВрдЪреЗрдВ, рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдЧрд╣ рдкрд░ рд░рдЦ рджреЗрдВ (рд╣рд╛рдВ, рдлрд┐рд░ рд╕реНрдкреЙрди рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдпрд╣ рдРрд╕рд╛ рдХрд░реЗрдЧрд╛)ред рдПрдЖрдИ рдмрдВрджреВрдХреЗрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп!
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ, рдФрд░ рдЗрд╕рдореЗрдВ aiред рдЗрд╕рдХреЗ рдмрд╛рдж ai рдлреЛрд▓реНрдбрд░ рдкрд░ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ Create -> C # Script рдЪреБрдиреЗрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд▓рд╛рдЬрд╝реНрдорд╛рдЯреВрд░реЗрдЯреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдЗрд╕реЗ рдПрдХ рдбрдмрд▓ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЖрдкрдХрд╛ рдЖрдИрдбреАрдИ рд▓реЛрдб рд╣реЛрдЧрд╛, рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдврд╛рдВрдЪрд╛ рд╣реЛрдЧрд╛:
PlasmaTurretAI.cs
using UnityEngine; using System.Collections; public class PlasmaTurretAI : MonoBehaviour //       ,    MonoBehaviour    ""    GameObject. { //     void Start () { } //      void Update () { } } 


рдФрд░ рдЕрдм, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдЖрдИ рдХреЛрдб рд╣реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ:
PlasmaTurretAI.cs
 using System.Collections.Generic; using System.Linq; using UnityEngine; //       ,    MonoBehaviour    ""    GameObject (     ). public class PlasmaTurretAI : MonoBehaviour { public GameObject[] targets; //   public GameObject curTarget; public float towerPrice = 100.0f; public float attackMaximumDistance = 50.0f; //  public float attackMinimumDistance = 5.0f; public float attackDamage = 10.0f; // public float reloadTimer = 2.5f; //  ,   public const float reloadCooldown = 2.5f; //  ,  public float rotationSpeed = 1.5f; //    public int FiringOrder = 1; //    (    2) public Transform turretHead; public RaycastHit Hit; //     private void Start() { turretHead = transform.Find("pushka"); //      } //      private void Update() { if (curTarget != null) //      { float distance = Vector3.Distance(turretHead.position, curTarget.transform.position); //    if (attackMinimumDistance < distance && distance < attackMaximumDistance) //          { turretHead.rotation = Quaternion.Slerp(turretHead.rotation, Quaternion.LookRotation(curTarget.transform.position - turretHead.position), rotationSpeed * Time.deltaTime); //     if (reloadTimer > 0) reloadTimer -= Time.deltaTime; //     -   if (reloadTimer < 0) reloadTimer = 0; //     -     if (reloadTimer == 0) //  { MobHP mhp = curTarget.GetComponent<MobHP>(); switch (FiringOrder) //,     { case 1: Debug.Log("  "); //   FiringOrder++; // FiringOrder  1 break; case 2: Debug.Log("  "); //   FiringOrder = 1; // FiringOrder    break; } reloadTimer = reloadCooldown; //        } } } else // { curTarget = SortTargets(); //     } } //    ,    ! public GameObject SortTargets() { float closestMobDistance = 0; //       GameObject nearestmob = null; //    List<GameObject> sortingMobs = GameObject.FindGameObjectsWithTag("Monster").ToList(); //     Monster      foreach (var everyTarget in sortingMobs) //     { //    ,  closestMobDistance    if ((Vector3.Distance(everyTarget.transform.position, turretHead.position) < closestMobDistance) || closestMobDistance == 0) { closestMobDistance = Vector3.Distance(everyTarget.transform.position, turretHead.position); //     ,     nearestmob = everyTarget;//    } } return nearestmob; //   } } 


рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред рдПрдХ рдЪрддреБрд░реНрднреБрдЬ рдЬреИрд╕рд╛ рд░рд╛рдХреНрд╖рд╕ рдХреЗрд╡рд▓ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╢рд░реНрдореАрд▓реА рдордд рдмрдиреЛ, Google, рдкрдврд╝реЗрдВ, рдпрд╣ рд╡рд┐рд╖рдп рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдЖрдк рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ Unity3D рдореЗрдВ quaternions рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ Unity3D рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБред

рдмрдВрджреВрдХ рдкрд░ рд╣рдорд╛рд░реА рддрд╛рдЬрд╝рд╛ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ "рдЦреАрдВрдЪрдиреЗ" рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реАрдзреЗ рдЙрд╕рдХреЗ рдкреНрд░реАрдлрд╝реИрдм рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрджрд┐ рдЖрдк рдмрдВрджреВрдХ рдХреЗ рдкреНрд░реАрдлреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрднрд╛рдЧ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдк рдХреЛрдб рдореЗрдВ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!


рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░реЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд░рд╛рдХреНрд╖рд╕ рдХреЛ рдореЙрдиреНрд╕реНрдЯрд░ рдЯреИрдЧ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХреЛ рджреЗрдЦреЗрдВ: рдКрдкрд░реА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЯреИрдЧ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рдлрд╝реАрд▓реНрдб рд╣реИ, рдЕрдм рдЕрдирдЯреИрдЧреНрдб рд╡реИрд▓реНрдпреВ рд╣реИред рдЗрд╕ рд╕реВрдЪреА рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдиреАрдЪреЗ рдЯреИрдЧ рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред


рдЯреИрдЧ рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ, рдФрд░ рддрддреНрд╡ 0 рдлрд╝реАрд▓реНрдб рдореЗрдВ "рдореЙрдиреНрд╕реНрдЯрд░" (рдмрд┐рдирд╛ рдЙрджреНрдзрд░рдг рдХреЗ, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ) рд▓рд┐рдЦреЗрдВред


рд╣рдо рдЕрдкрдиреЗ рд░рд╛рдХреНрд╖рд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рдЯреИрдЧ рдХреА рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - рдЙрдирдореЗрдВ рд╕реЗ рд░рд╛рдХреНрд╖рд╕ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред

рд╢реБрд░реБрдЖрддреА рдореЙрдм рд╕реНрдХреВрд▓


рдЕрдм рддрдХ, рд╣рдорд╛рд░реЗ рдореЙрдм рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдереЗ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмрдВрджреВрдХ рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдФрд░ рдЦреБрд╢реА, рдЦреБрд╢реА рдФрд░ рд╕рдмрд╕реЗ рдКрдкрд░, рдЗрд╕реЗ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдирд╛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗред
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рддрд░реАрдХреЗ рд╕реЗ, рд╣рдо рдирдИ C # рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ: MobAI, GlobalVars, MobHP, TurretHP, SprnerAIред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

MobAI.cs
 using UnityEngine; using System.Collections.Generic; public class MobAI : MonoBehaviour { public GameObject Target; //  public float mobPrice = 5.0f; //    public float mobMinSpeed = 0.5f; //   public float mobMaxSpeed = 2.0f; //   public float mobRotationSpeed = 2.5f; //   public float attackDistance = 5.0f; //  public float damage = 5; //,   public float attackTimer = 0.0f; //     public const float coolDown = 2.0f; //,         private float MobCurrentSpeed; // ,   private Transform mob; //    private GlobalVars gv; //     private void Awake() { gv = GameObject.Find("GlobalVars").GetComponent<GlobalVars>(); //  mob = transform; //     ( ) MobCurrentSpeed = Random.Range(mobMinSpeed, mobMaxSpeed); //         } private void Update() { if (Target == null) //    { Target = SortTargets(); //      } else //     { mob.rotation = Quaternion.Lerp(mob.rotation, Quaternion.LookRotation(new Vector3(Target.transform.position.x, 0.0f, Target.transform.position.z) - new Vector3(mob.position.x, 0.0f, mob.position.z)), mobRotationSpeed); //-,    ! mob.position += mob.forward * MobCurrentSpeed * Time.deltaTime; //  ,    float distance = Vector3.Distance(Target.transform.position, mob.position); //    Vector3 structDirection = (Target.transform.position - mob.position).normalized; //   float attackDirection = Vector3.Dot(structDirection, mob.forward); //   if (distance < attackDistance && attackDirection > 0) //         { if (attackTimer > 0) attackTimer -= Time.deltaTime; //    0 -   if (attackTimer <= 0) //         { TurretHP thp = Target.GetComponent<TurretHP>(); //     if (thp != null) thp.ChangeHP(-damage); //   ,   (      ,   ) attackTimer = coolDown; //     } } } } //    ,    ! private GameObject SortTargets() { float closestTurretDistance = 0; //       GameObject nearestTurret = null; //    List<GameObject> sortingTurrets = gv.TurretList; //    foreach (var turret in sortingTurrets) //     { //    ,  closestTurretDistance    if ((Vector3.Distance(mob.position, turret.transform.position) < closestTurretDistance) || closestTurretDistance == 0) { closestTurretDistance = Vector3.Distance(mob.position, turret.transform.position); //     ,     nearestTurret = turret;//    } } return nearestTurret; //   } } 


GlobalVars.cs - рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рд╡рд░реНрдЧ
 using System.Collections.Generic; using UnityEngine; public class GlobalVars : MonoBehaviour { public List<GameObject> MobList = new List<GameObject>(); //    public int MobCount = 0; //    public List<GameObject> TurretList = new List<GameObject>(); //    public int TurretCount = 0; //    public float PlayerMoney = 200.0f; //  } 


MobHP.cs
 using UnityEngine; public class MobHP : MonoBehaviour { public float maxHP = 100; //  public float curHP = 100; //  public Color MaxDamageColor = Color.red; //   public Color MinDamageColor = Color.blue; //   private GlobalVars gv; //     private void Awake() { gv = GameObject.Find("GlobalVars").GetComponent<GlobalVars>(); //  if (gv != null) { gv.MobList.Add(gameObject); //      gv.MobCount++; //   } if (maxHP < 1) maxHP = 1; //      -   } public void ChangeHP(float adjust) //    { if ((curHP + adjust) > maxHP) curHP = maxHP;//     adjust   ,    -      else curHP += adjust; //   adjust } private void Update() { gameObject.renderer.material.color = Color.Lerp(MaxDamageColor, MinDamageColor, curHP / maxHP); //       .  :  -    ,  - . if (curHP <= 0) //       { MobAI mai = gameObject.GetComponent<MobAI>(); //   AI  if (mai != null && gv != null) gv.PlayerMoney += mai.mobPrice; //   -          Destroy(gameObject); //  } } private void OnDestroy() //  { if (gv != null) { gv.MobList.Remove(gameObject); //      gv.MobCount--; //     1 } } } 


рдФрд░ рдореИрдВрдиреЗ рдЕрдЧрд▓реА рдХрдХреНрд╖рд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХреА, рдпрд╣ рдХреБрдЫ рдЕрдВрддрд░реЛрдВ рдХреЗ рд╕рд╛рде MobHP рдХреА рд▓рдЧрднрдЧ рдкреВрд░реНрдг рдкреНрд░рддрд┐ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рдЗрд╕реЗ рдЕрдкрдирд╛ рд░рдВрдЧ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

TurretHP.cs
 using UnityEngine; public class TurretHP : MonoBehaviour { public float maxHP = 100; //  public float curHP = 100; //  private GlobalVars gv; //     private void Awake() { gv = GameObject.Find("GlobalVars").GetComponent<GlobalVars>(); //  if (gv != null) { gv.TurretList.Add(gameObject); gv.TurretCount++; } if (maxHP < 1) maxHP = 1; } public void ChangeHP(float adjust) { if ((curHP + adjust) > maxHP) curHP = maxHP; else curHP += adjust; if (curHP > maxHP) curHP = maxHP; } private void Update() { if (curHP <= 0) { Destroy(gameObject); } } private void OnDestroy() { if (gv != null) { gv.TurretList.Remove(gameObject); gv.TurretCount--; } } } 


SpawnerAI.cs
 using UnityEngine; public class SpawnerAI : MonoBehaviour { public int waveAmount = 5; //   1      public int waveNumber = 0; //   public float waveDelayTimer = 30.0F; //    public float waveCooldown = 20.0F; // (  !)    ,     public int maximumWaves = 500; //     public Transform Mob; //     Unity public GameObject[] SpawnPoints; //   private GlobalVars gv; //     private void Awake() { SpawnPoints = GameObject.FindGameObjectsWithTag("Spawnpoint"); //      gv = GameObject.Find("GlobalVars").GetComponent<GlobalVars>(); //  } private void Update() { if (waveDelayTimer > 0) // h     { if (gv != null) { if (gv.MobCount == 0) waveDelayTimer = 0; //     -     else waveDelayTimer -= Time.deltaTime; //   } } if (waveDelayTimer <= 0) //      { if (SpawnPoints != null && waveNumber < maximumWaves) //           { foreach (GameObject spawnPoint in SpawnPoints) //    { for (int i = 0; i < waveAmount; i++) // i    ,          { Instantiate(Mob, new Vector3(spawnPoint.transform.position.x, spawnPoint.transform.position.y, spawnPoint.transform.position.z + i * 10), Quaternion.identity); //  } if (waveCooldown > 5.0f) //    5  { waveCooldown -= 0.1f; //  0.1  waveDelayTimer = waveCooldown; //   } else // { waveCooldown = 5.0f; //     5  waveDelayTimer = waveCooldown; } if (waveNumber >= 50) // 50  { waveAmount = 10; //   10     } } waveNumber++; //   } } } } 


рдФрд░ рдЕрдм рдЖрдкрдХреЛ рдмрдВрджреВрдХ рдПрдЖрдИ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рд╕реНрд╡рд┐рдЪ (FiringOrder) рдвреВрдВрдвреЗрдВ рдФрд░ рдкреВрд░реЗ рдмреНрд▓реЙрдХ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓реЗрдВ:

  switch (FiringOrder) //,     { case 1: if (mhp != null) mhp.ChangeHP(-attackDamage); //   FiringOrder++; // FiringOrder  1 break; case 2: if (mhp != null) mhp.ChangeHP(-attackDamage); //   FiringOrder = 1; // FiringOrder    break; } 


рдЙрд╕реА рд╡рд░реНрдЧ рдХреЗ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ

 return nearestmob; 


рдЗрд╕ рддрд░рд╣ рд╕реЗ

 return closestMobDistance > attackMaximumDistance ? null : nearestmob; 


рдЗрд╕реЗ рдЯрд░реНрдиреЗрд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рд╛рд▓рдд "рд╕реЗ рдкрд╣рд▓реЗ рд╣реИ?" рд╕рдЪ - рддреЛ рдпрд╣ рдЕрд╢рдХреНрдд рд▓реМрдЯ рдЖрдПрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдирд┐рдХрдЯрддрдо рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдмрдВрджреВрдХ рдПрдХ рд▓рдХреНрд╖реНрдп рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝реЗрдЧреА рдЬреЛ рдХрд┐ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╕рдХрддреА рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЛрдб рддреИрдпрд╛рд░ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ MobSpawner рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЗрд╕рдХрд╛ рд╕реНрдерд╛рди рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЕрдЧрд░ рдХреЗрд╡рд▓ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рдкрд░ SpawnerAI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдЦреЛ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдЪрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВред рд╣рдо рдЕрдкрдиреЗ рднреАрдбрд╝ рдкреНрд░реАрдлрд╝реИрдм рдХреЛ рдЪрд░ рдореЛрдмреА рдХреЗ рдорд╛рди рддрдХ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред

рд╕реНрдкрд╛рдКрдирд░ рдЕрдм рдирд╣реАрдВ рдЫреВрддрд╛ред

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

рд╣рдорд╛рд░реЗ 2 MobAI рдФрд░ MobHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореЙрдм рдкрд░, рдФрд░ TurretHP рдХреЛ рдЕрдкрдиреА рддреЛрдк рдкрд░ рд▓рдЯрдХрд╛рдПрдВред рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд▓рд┐рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред
рдЧрди рдХреЗ рдкреНрд░реАрдлреИрдм рдХреЛ MobAI рдореЗрдВ рдЯрд╛рд░реНрдЧреЗрдЯ рд╡реИрд▓реНрдпреВ рдкрд░ рдЦреАрдВрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, AI рдЦреБрдж рдЯрд╛рд░рдЧреЗрдЯ рдЦреЛрдЬрддрд╛ рд╣реИред рдмрд╣реБрдд рдЖрджрд┐рдо, рдзреАрд░реЗ-рдзреАрд░реЗ, рд▓реЗрдХрд┐рди рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред

рд░рд╛рдХреНрд╖рд╕ рдкреНрд░реАрдлрд╝реИрдм рдореЗрдВ рдЛрдЧреЛрдмреЙрдбреА рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВ (рдШрдЯрдХ -> рднреМрддрд┐рдХреА -> рдЛрдЧреЛрдмреЙрдбреА)ред



PotorGUIem?


GUI рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХ рдирд╛рдордХ рдПрдХ рдирдИ C # рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

Graphic.cs
 using UnityEngine; public class Graphic : MonoBehaviour { private GlobalVars gv; //     public Rect buyMenu; //   public Rect firstTower; //     public Rect secondTower; //     public Rect thirdTower; //     public Rect fourthTower; //     public Rect fifthTower; //     public Rect towerMenu; //    (/) public Rect towerMenuSellTower; //    public Rect towerMenuUpgradeTower; //    public Rect playerStats; //   public Rect playerStatsPlayerMoney; //     public GameObject plasmaTower; //  ,     public GameObject plasmaTowerGhost; //  ,     private RaycastHit hit; //   public LayerMask raycastLayers = 1; //    / - ,    private GameObject ghost; //     private void Awake() { gv = GameObject.Find("GlobalVars").GetComponent<GlobalVars>(); //  if (gv == null) Debug.LogWarning("gv variable is not initialized correctly in " + this); //  ,  gv  buyMenu = new Rect(Screen.width - 185.0f, 10.0f, 175.0f, Screen.height - 100.0f); //  ,   X, Y, , . X  Y       firstTower = new Rect(buyMenu.x + 12.5f, buyMenu.y + 30.0f, 150.0f, 50.0f); secondTower = new Rect(firstTower.x, buyMenu.y + 90.0f, 150.0f, 50.0f); thirdTower = new Rect(firstTower.x, buyMenu.y + 150.0f, 150.0f, 50.0f); fourthTower = new Rect(firstTower.x, buyMenu.y + 210.0f, 150.0f, 50.0f); fifthTower = new Rect(firstTower.x, buyMenu.y + 270.0f, 150.0f, 50.0f); playerStats = new Rect(10.0f, 10.0f, 150.0f, 100.0f); playerStatsPlayerMoney = new Rect(playerStats.x + 12.5f, playerStats.y + 30.0f, 125.0f, 25.0f); towerMenu = new Rect(10.0f, Screen.height - 60.0f, 400.0f, 50.0f); towerMenuSellTower = new Rect(towerMenu.x + 12.5f, towerMenu.y + 20.0f, 75.0f, 25.0f); towerMenuUpgradeTower = new Rect(towerMenuSellTower.x + 5.0f + towerMenuSellTower.width, towerMenuSellTower.y, 75.0f, 25.0f); } private void Update() { switch (gv.mau5tate) //    { case GlobalVars.ClickState.Placing: //      { if (ghost == null) ghost = Instantiate(plasmaTowerGhost) as GameObject; //    -       else // { Ray scrRay = Camera.main.ScreenPointToRay(Input.mousePosition); // ,         if (Physics.Raycast(scrRay, out hit, Mathf.Infinity, raycastLayers)) //        (..  ) { Quaternion normana = Quaternion.FromToRotation(Vector3.up, hit.normal); //    ghost.transform.position = hit.point; //          ghost.transform.rotation = normana; //    ,    ,    if (Input.GetMouseButtonDown(0)) //   { GameObject tower = Instantiate(plasmaTower, ghost.transform.position, ghost.transform.rotation) as GameObject; //     if (tower != null) gv.PlayerMoney -= tower.GetComponent<PlasmaTurretAI>().towerPrice; //    Destroy(ghost); //   gv.mau5tate = GlobalVars.ClickState.Default; //      } } } break; } } } private void OnGUI() { GUI.Box(buyMenu, "Buying menu"); //     buyMenu  ,   "" if (GUI.Button(firstTower, "Plasma Tower\n100$")) //      { gv.mau5tate = GlobalVars.ClickState.Placing; //    } if (GUI.Button(secondTower, "Pulse Tower\n155$")) //   { //action here } if (GUI.Button(thirdTower, "Beam Tower\n250$")) { //action here } if (GUI.Button(fourthTower, "Tesla Tower\n375$")) { //action here } if (GUI.Button(fifthTower, "Artillery Tower\n500$")) { //action here } GUI.Box(playerStats, "Player Stats"); GUI.Label(playerStatsPlayerMoney, "Money: " + gv.PlayerMoney + "$"); GUI.Box(towerMenu, "Tower menu"); if (GUI.Button(towerMenuSellTower, "Sell")) { //action here } if (GUI.Button(towerMenuUpgradeTower, "Upgrade")) { //action here } } } 


рдЕрд░реЗ рд╣рд╛рдБ, рдЕрдм рднреА рд╣рдореЗрдВ GlobalVars рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:

GlobalVars.cs
 using System.Collections.Generic; using UnityEngine; public class GlobalVars : MonoBehaviour { public List<GameObject> MobList = new List<GameObject>(); //    public int MobCount = 0; //    public List<GameObject> TurretList = new List<GameObject>(); //    public int TurretCount = 0; //    public float PlayerMoney; //  public ClickState mau5tate = ClickState.Default; //   public enum ClickState //    { Default, Placing, Selling, Upgrading } public void Awake() { PlayerMoney = PlayerPrefs.GetFloat("Player Money", 200.0f); //  ,        -   200$,     } public void OnApplicationQuit() { PlayerPrefs.SetFloat("Player Money", PlayerMoney); //     PlayerPrefs.Save(); } } 


рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдмрдВрджреВрдХ рдХрд╛ рдПрдХ рднреВрдд рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдмрдВрджреВрдХ рдХреА рдирдХрд▓ рдХрд░реЗрдВ, рдХреБрдЫ рдЦрд╛рд▓реА рдЬреАрдУ рдХреЛ рдЗрд╕рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВ, рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдмрдВрджреВрдХ рдХреЛ рдЗрд╕рдХреЗ рдкреНрд░реАрдлрд╝реИрдм рд╕реЗ рдЕрдирдЯрд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрдЪрд╛рдПрдВ! рдЕрдЧрд▓рд╛, рд╣рдо рддреЛрдк рдХреЗ рдЕрдВрджрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреВрд░реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╢реЗрдбреНрд╕ рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рд╡рд┐рдХреНрд╖реЗрдк рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдмрдВрджреВрдХ рдХреА рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП - рдЗрд╕реЗ рдордВрдЪ рдкрд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд╣рд╛рдВ рдкрджрд╛рдиреБрдХреНрд░рдо рдЦреЛрд▓реЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рднреВрдд рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рдХрд░ рджреВрдВрдЧрд╛ред рдХреБрдЫ рдЕрднреА рднреА рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдкреИрдХреЗрдЬ (3.7 mb) рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдбрд╝реА рд╣реИред

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреЗрд╢рдХ, рдЬрд╛рдо рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ - рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдмрдВрджреВрдХ рд╕реНрдкреЙрди рддрдВрддреНрд░ рдХреЗ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдзрд┐рднрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА рд╡рд┐рдзрд┐ рдмрдирд╛рдХрд░ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдкрд╛рд░реНрд╕ рдХрд░рдХреЗ рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓рди рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдХреЛрдб рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЕрдЪрд╛рдирдХ рдЙрдардиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рддрд╣рдд рдЦреБрдж рдкрд░ рд╢рд╛рд╕рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

рдФрд░ рдпрджреНрдпрдкрд┐ рдкрд╛рда рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдмрд╣реБрдд рд▓рдВрдмрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЦреЗрд▓ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рддрдВрддреНрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рдордЭ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдФрд░ рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд╣реА рдирд┐рдХрд▓рд╛, рддреЛ рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:



рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП!

07/26/2012 : рдХреЛрдб рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб рдмрдЧреНрд╕
05/14/2018 : рдЯреВрдЯреЗ рд▓рд┐рдВрдХ рдХреА рдорд░рдореНрдордд рдХрд░реЗрдВ

Source: https://habr.com/ru/post/In148410/


All Articles