рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдЖрдЬ, 26 рд╕рд┐рддрдВрдмрд░, рдореЗрд░рд╛ рдЬрдиреНрдорджрд┐рди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рдкрд╣реЗрд▓реА рдХреА рдЕрдЧрд▓реА рдХрдбрд╝реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдПрдХ рд╢реМрдХрд┐рдпрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рдХрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреА (рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдвреВрдВрдврддреЗ рд╣реИрдВ, рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЦрд╝реБрд╢реА рд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреВрдВрдЧрд╛)ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕рдм рдХреБрдЫ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ) рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдЧрд▓реА рдХрдбрд╝реА рдХреИрд╕реЗ рдмрдирд╛рдИ, рдореИрдВ рдЗрд╕ рдкрд░ рдХреИрд╕реЗ рдЧрдпрд╛ рдФрд░ рдХреНрдпрд╛ рдЖрдпрд╛ред
рднреНрд░рдорд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдореЗрд░рд╛ рдорддрд▓рдм рдЙрди рд╢рдмреНрджреЛрдВ рд╕реЗ рд╣реИ рдЬреЛ рд▓реЗрдЦ рдореЗрдВ рд╣реИрдВ:
рдореВрд▓ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╣реИ, рдПрдХ рдЧреЗрдо рдЬреЛ рддрдХрдиреАрдХреА-рдбреЗрдореЛ рдХреЗ рднреВрдорд┐рдЧрдд рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реАрдХреНрд╡рд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣реИ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЬрд┐рд╕ рдЦреЗрд▓ рдХреА рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред
рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реА рдХрдбрд╝реА рдХреЗ рд╕рд╛рде рдореВрд▓ рдЦреЗрд▓ рдХреА рддреБрд▓рдирд╛ рдХрд░реВрдВрдЧрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВрдореИрдВрдиреЗ рдЬрдирд╡рд░реА рдХреЗ рдЕрдВрдд рдореЗрдВ рдЦреЗрд▓ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдорд╛рд░реНрдЪ рдХреЗ рдЕрдВрдд рддрдХ рддрдХрдиреАрдХреА рд╣рд┐рд╕реНрд╕рд╛ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ (2 рдорд╣реАрдиреЗ)ред рдмрд╛рдж рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдЧреЗрдо рд▓рд┐рдпрд╛ рдФрд░ рдордИ рдХреЗ рдордзреНрдп рдореЗрдВ рдЗрд╕ рдЧреЗрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ред рдореИрдВрдиреЗ рдЧрд░реНрдорд┐рдпреЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдмрд╛рд░ (3.5 рдорд╣реАрдиреЗ) рдореИрдВрдиреЗ рдЦреЗрд▓ рдХреЛ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рднрд░ рджрд┐рдпрд╛ред рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореВрд▓ рдЦреЗрд▓ (6 рдорд╣реАрдиреЗ рдмрдирд╛рдо 5.5 рдорд╣реАрдиреЗ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЕрдЧрд▓реА рдХрдбрд╝реА рдХреЛ рдФрд░ рднреА рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдореИрдВрдиреЗ рдПрдХрддрд╛ рдЗрдВрдЬрди рдкрд░ рдПрдХ рдЧреЗрдо рдмрдирд╛рдпрд╛ред рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐
рдпреЗ рд▓реЛрдЧ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЗрдВрдЬрди рдмрдирд╛рдПрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝реЗрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ рдФрд░ рдлрд┐рд░ рднреА рдЗрд╕рдиреЗ рдПрдХ рдорд╛рдирдХ рдкрд░ рдЦреЗрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдореВрд▓ рдФрд░ рдЕрдЧрд▓реА рдХрдбрд╝реА рдХреЗ рдмреАрдЪрд╕реАрд░реАрдЬрд╝ рдмрдирд╛рдиреЗ рдХрд╛ рдЖрдЗрдбрд┐рдпрд╛ рдореБрдЭреЗ рдУрд░рд┐рдЬрд┐рдирд▓ рдЧреЗрдо (рдЕрдЧрд╕реНрдд рдореЗрдВ рдХрд╣реАрдВ) рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдЖрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЬреЛ рдЧрд▓рддрд┐рдпрд╛рдБ рдХреАрдВ, рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрдХрд░ рдореИрдВ рд╕рдмрдХреБрдЫ рдорд┐рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рд╕рдлрд▓ рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рднреА рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛрдб рдереА, рд╕рднреА рд╕рд╛рдордЧреНрд░реА рддреИрдпрд╛рд░ рдереА, рдФрд░ рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рджреЗрд░реА рдХреАред рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд░реВрд░реА рдерд╛ред
рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рд╕реАрдХреНрд╡рд▓ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕рддрд╛рдпрд╛ рдЧрдпрд╛ред рдЗрд╕ рдмрд╛рд░ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдирд╣реАрдВ рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдиреИрддрд┐рдХ рд░реВрдк рд╕реЗ рдЖрд▓рд╕реА рдерд╛, рд░рд┐рд╣рд╛рдИ рдХреЗ рдмрд╛рдж рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд░рдо рдерд╛ред рдореБрдЭреЗ рдХреБрдЫ рдирдпрд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЪрд╛рд╣рд┐рдП рдерд╛ред рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рд╣реБрдПред
рдЕрдЧрд▓реЗ 3 рдорд╣реАрдиреЗ рдореИрдВрдиреЗ рдЦреЗрд▓реЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░, рдХрд┐рд╕реА рднреА рд╕реЗрдЯрд┐рдВрдЧ, рдХрд┐рд╕реА рднреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореИрдВрдиреЗ рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖рд╛рдУрдВ рдХреЗ рдкреИрдорд╛рдиреЗ, рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ, рдФрд░ рдХрднреА-рдХрднреА рддрд░реНрдХ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдХреЗ рдмрд╛рд╡рдЬреВрдж рднреА рдХрд┐рдпрд╛ред рдирддреАрдЬрддрди, рдореБрдЭреЗ рд▓рдЧрднрдЧ 50 рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдорд┐рд▓реАрдВред рд╡реЗ рд╕рднреА рд╡рд┐рднрд┐рдиреНрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдереЗ: рдирд┐рд╢рд╛рдиреЗрдмрд╛рдЬреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рд░рдгрдиреАрддрд┐рдпреЛрдВ рддрдХ, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдорд░ рд╕реЗ рд▓реЗрдХрд░ рдЖрд░рдкреАрдЬреА рдЧреЗрдо рддрдХред
рдЗрд╕рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдЬрд╛рд░реА рд░рд╣реЗрдВрдЧреЗ, рдЬрдм рддрдХ рдореИрдВ рдердХ рдирд╣реАрдВ рдЬрд╛рддрд╛ред рдФрд░ рдореИрдВ рдЦреЗрд▓ рдмрдирд╛рдиреЗ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдЦреЗрд▓реЛрдВ рдХреЗ рдЕрдзреВрд░реЗрдкрди рд╕реЗ рдердХ рдЧрдпрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдПрдХ рд▓рдХреНрд╖реНрдп рджрд┐рдпрд╛: рдЕрдВрдд рд╕реЗ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдЦреЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рджреВрд╕рд░рд╛ рдЦреЗрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рдкреНрд░реЛ 2 рдЦреЗрд▓рдпрд╣ рдЦреЗрд▓ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реИред рдпрд╣ рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рд░реЗрдЦрд╛рдВрдХрди рдХреЛ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдЦреЗрд▓ рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдЯ рд▓рд╛рдЗрди рдХреЛ 2 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдл рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЦреЗрд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рдереА рдХрд┐ рд╕рднреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдЧрддрд┐рд╢реАрд▓ рдереАред рд░реЗрдЦрд╛рдВрдХрди рдЪрд▓реЗ рдЧрдП, рдФрд░ рд▓рд╛рдЗрдиреЗрдВ рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рдЧреНрд░рд╛рдлрд╝ рд╕реЗ рдЬреБрдбрд╝реА рд░рд╣рддреА рд╣реИрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдореИрдВ рдкреНрд░реЗрд░рд┐рдд рд╣реВрдВ) рдФрд░ рдПрдХ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред рдореБрдЭреЗ рддрд╛рдХрдд рдХрд╛ рдЙрдЫрд╛рд▓ рдорд╣рд╕реВрд╕ рд╣реБрдЖ рдФрд░ рдлрд┐рд░ рднреА рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЦреЗрд▓ рдХреА рдЕрдЧрд▓реА рдХрдбрд╝реА рдмрдирд╛рдИред
рд╡рд┐рдЪрд╛рд░рдХреБрдЫ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдореВрд▓ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдФрд░ рднрдпрднреАрддред рдЧреБрдгрд╡рддреНрддрд╛ рд╕реЗред рдЦреЗрд▓ рд╕рднреА рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдирдХ рдкрд╣реЗрд▓реА рдХреЗ рддрд╣рдд рдиреАрдЪреЗ рдЙрддрд╛рд░рд╛ рдЧрдпрд╛: рд╕реНрддрд░реЛрдВ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд┐рддрд╛рд░реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛, рдПрдХ рдЯрд╛рдЗрдорд░, рдЦрддреНрдо рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдмрд┐рдирд╛ рдмрдЬрдЯ рдФрд░ рдмрд╣реБрдд рдмреЗрд╕реНрд╡рд╛рдж рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореВрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдирд┐рдореЗрд╢рди рдХрд╛ рдЕрднрд╛рд╡ рдерд╛! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдореВрд▓ рдерд╛, рдФрд░ рдХреБрдЫ, рд╢рд╛рдпрдж, рдИрдорд╛рдирджрд╛рд░реА рд╕реЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣рд╛рдВ рднреА рд╡реЗ рдореБрдЭрд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред
рдореБрдЭреЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдорд┐рд▓рд╛рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓рд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рдЦреЗрд▓ рд╣реИред рдФрд░ рд╡рд╣ рдореЗрд░реЗ рдЦреЗрд▓ рдХреЗ рдЕрдзрд┐рдХ рд╕рдлрд▓ рдмрджрд▓рд╛рд╡ рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред рдореБрдЭреЗ рдЗрд╕
рд╡реАрдбрд┐рдпреЛ рд╕реЗ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ред
рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдЧреЗрдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрд▓рдЬреА рд╕реНрдорд╛рд░реНрдЯ рдЯреАрд╡реА рд╣реИред рдпрд╣ 2014 рдореЗрдВ LG R & D Lab рдХреЗ рд░реВрд╕реА рдбрд┐рд╡реАрдЬрди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:


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


рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЗрд╕рдиреЗ 60 рдПрдлрдкреАрдПрд╕ рдХреЛ рд╕реНрдерд┐рд░ рджрд┐рдЦрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдлреЛрди рдкрд░, рдореЗрд░реА рд╕реЛрдиреА рдПрдХреНрд╕рдкреАрд░рд┐рдпрд╛ рдкрд░ рднреА рдпрд╣ рд▓рдЧрднрдЧ 20 рдПрдлрдкреАрдПрд╕ рдкрд░ рдерд╛ рдФрд░ 10 рдПрдлрдкреАрдПрд╕ рддрдХ рдбреВрдм рдЧрдпрд╛ред рдФрд░ рдореИрдВ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдЫрдд рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдерд╛, рд╡рд┐рдирд╛рд╢ рдХрд╛ рд░рд╛рд╕реНрддрд╛ ...
рдзреНрд╡рдВрд╕рд╢реАрд▓рд╢реБрд░реВ рдореЗрдВ, рдпрд╣ рд╕рдм рдореБрдЭреЗ рдмреБрд░рд╛ рд▓рдЧрд╛ред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдпрд╣ рдореЗрд░рд╛ рдореБрдЦреНрдп рдЧреЗрдорд┐рдВрдЧ рд╢реЛ рд╣реИред рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рдж рдЪрд╛рд╣рддрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН рдЙрддреНрдкрдиреНрди рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рдирд╛рд╢, рдкреНрд░рднрд╛рд╡ рдХреА рджрд┐рд╢рд╛ рдФрд░ рд╢рдХреНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпреЛрдЬрдирд╛ рдиреЗ рдлрд┐рд░ рд╕реЗ рдЫрдд рдкрд░ рдЖрд░рд╛рдо рдХрд┐рдпрд╛, рдЗрд╕ рдмрд╛рд░ рдореЗрд░рд╛ рдЬреНрдЮрд╛рдиред рдореБрдЭреЗ рдПрдХ рд╕рд░рд▓ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рдерд╛ред
рдЕрдм, рд╡рд┐рдирд╛рд╢рдХрд╛рд░реАрддрд╛ рдСрдкрд░реЗрд╢рди рдХреЗ рдПрдХ рд╕рд░рд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереА, рдЕрд░реНрдерд╛рддреН, рдЗрд╕рдиреЗ рд╕реНрд╡рдпрдВ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдИ, рдХреЗрд╡рд▓ рднреМрддрд┐рдХ рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ, рдФрд░ рдореВрд▓ рд╡рд╕реНрддреБ рдиреЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд░реЗрдВрдбрд░рд░, рдХреЛрд▓рд╛рдЗрдбрд░ 2 рдбреА рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░, рдЕрдЧрд░ рдХреЛрдИ рдПрдХ рдерд╛, рддреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╡рд┐рдЧрд┐рдб 2 рдбреАред
рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рдЦрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ - рдХреЛрд▓рд╛рдбрд░ред рдПрдХ рддрд░рдл, рдЖрдк PolygonCollider2D рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреАрдбрд╝рд╛ рдирд╣реАрдВ рджреА рдЬрд╛ рд╕рдХрддреА, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл, рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рдЧреЗрдо рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдиреБрдХрд╕рд╛рди рдЙрдард╛рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдирд╖реНрдЯ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд╕рднреА рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ BoxCollider2D (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЧреЛрд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЯреБрдХрдбрд╝реЗ) рдереЗред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпреЛрдЧрджрд╛рди рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд╕рд╣реА рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдпрд╣ 0.0 (3) рдпрд╛ 30 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рдЧрдпрд╛)ред рд▓реЗрдХрд┐рди рдЕрдм, рдЙрдЪреНрдЪ рдЧрддрд┐ рдкрд░, рд╡рд╕реНрддреБ рдиреЗ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдбрд╝рд╛рди рднрд░реА, рдФрд░ рдЗрд╕рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЦреЗрд▓ рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдЖред
рдЗрди рддрддреНрд╡реЛрдВ рдиреЗ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ рдкрд░ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдпрд╛ рдФрд░ рдЕрдм рдордВрдЪ рдкрд░ рд╕реИрдХрдбрд╝реЛрдВ рднреМрддрд┐рдХ рд╡рд╕реНрддреБрдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ! рдореВрд▓ рдХреЗ рдмрд╛рдж, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдлрд▓рддрд╛, рдХреНрд░рд╛рдВрддрд┐, рдЖрджрд┐ рдерд╛ред рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдПрдХ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдЦреЗрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдЕрддреНрдпрдзрд┐рдХ рдХрдЯреНрдЯрд░ред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЦреЗрд▓ рдХреЛ рднрдбрд╝рдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ ...
рдиреБрдХрд╕рд╛рди рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рдмрд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬрд┐рд╕реЗ 2 рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкрд░ рдХрд╛рдо рдЬрд╛рд░реА рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдЕрддреНрдпрдВрдд рдкрд░рд┐рд╖реНрдХреГрдд рдкреНрд░рдгрд╛рд▓реА рд╕рд╛рдордиреЗ рдЖрдИ, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред
рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрд╖рддрд┐ рдзрд╛рд░рдгрд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ "рдЬрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдЖрдк рдорд╛рд░реЗрдВрдЧреЗ, рдЙрддрдирд╛ рд╣реА рдордЬрдмреВрдд рд╣реЛрдЧрд╛", рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ "рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕рдВрдкрд░реНрдХ - рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдиреБрдХрд╕рд╛рди" рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ "рдкреНрд░рднрд╛рд╡ рдмрд▓" рдЬреИрд╕реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬ рдХрд╛ рд╕реНрдерд╛рди рдПрдХ рдХреНрд╖рддрд┐ рдЧреБрдгрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдиреБрдХрд╕рд╛рди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реБрдЖ рдХрд┐ рд╕рдордп рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдЗрддрдиреА рдмрдбрд╝реА рд╣реЛ рдЧрдИ рдХрд┐ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдмрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛: рдЦреЗрд▓ рдиреЗ рдПрдВрдЯрд░ 2 рдбреА рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдмрдиреАрдВ: рддреЗрдЬ рдЧрддрд┐ рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реБрдИрдВ - рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реБрдЖред рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛? рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореИрдВ рдпрд╣ рднреА рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛
рддреЛ рдиреБрдХрд╕рд╛рди рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рд╣реБрдИ? рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕реЗред рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп 1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ (рдмрд╛рдж рдореЗрдВ рдмрдврд╝рдХрд░ 2 рд╣реЛ рдЧрдпрд╛)ред рд╣рд╛рдВ, рдпрд╣ рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрд╛рд▓ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдордЬрдмреВрдд рд╕реНрдкрд░реНрд╢ рдкрд░ рд╡рд╣ рдорд░ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдХрдо рдЧрддрд┐ рд╕реЗ рдЬреАрд╡рд┐рдд рд░рд╣рдиреЗ рдХрд╛ рдореМрдХрд╛ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рдмрд╛рд░)ред рдореИрдВ рдореВрд▓ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред "рд▓реЗрдХрд┐рди рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрдЧрд╛?" - рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдФрд░ рдореБрдЦреНрдп рдЬрд╛рд▓ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ред
рдореБрдЦреНрдп рдЬрд╛рд▓рдореЗрд░реА рдкрд╣реЗрд▓реА рдХрд╛ рдЖрдзрд╛рд░ рдЬрд╛рд▓ рд╕реЗ рдмрдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреЗрд▓ рдХреЗ рдирд╛рдо рдХрд╛ рдЦрдВрдбрди рдХрд┐рдпрд╛ред рдирд╛рдо рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдЧреЗрдВрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдРрд╕реЗ рдирд╣реАрдВ рдереЗред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЕрдзрд┐рдХ рдорд╛рдирдХ рдкрд╣реЗрд▓рд┐рдпрд╛рдБ рдереАрдВред
рдореБрдЦреНрдп рдФрд░ рдкрд╣рд▓рд╛ рдПрдХ рдЖрд░рд╛ рдерд╛ред рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдкрд╣реЗрд▓реАред рдпрд╣ рдмрд╣реБрдд рд╣реА рдЖрд╢рд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЙрддреНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдХреА рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ред

рджреЗрдЦрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯusing UnityEngine; public class Saw : GlobalFunctions { public AudioClip setClip; private TypePlaying typePlaying = TypePlaying.Sound; private AudioBase audioBase; private float speed = 4f; private Transform tr; private void Awake() { audioBase = GameObject.FindWithTag("MainCamera").GetComponent<AudioBase>(); tr = transform; } private void Update() { float s = Time.fixedDeltaTime / 0.03f * (Time.deltaTime / 0.03f); tr.localEulerAngles = new Vector3(0f, 0f, tr.localEulerAngles.z - speed * s); } private void OnCollisionEnter2D(Collision2D collision) { if (collision.collider.tag == "Player") { audioBase.SetSound(setClip, 1, 0.2f, typePlaying, false); } } public float GetSpeed() { return speed; } }
рдЕрдЧрд▓рд╛ рдПрдХ рд▓реЗрдЬрд░ рдерд╛, рдЬреЛ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдмрд╣реБрдд рднрд╛рд░реА рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рднрд░рд╛ рд╣реБрдЖ рдерд╛ред рдпрджрд┐ рдЖрдк рдордВрдЪ рдкрд░ 40 рдЯреБрдХрдбрд╝реЗ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЦреЗрд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкрд┐рдЫрдбрд╝рдиреЗ рд▓рдЧреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреНрд░рдХрд╛рд╢, рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрд╡рд░реНрддрди рдХреЗ рдкреВрд░реНрдг-рднреМрддрд┐рдХ рдирд┐рдпрдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рднреА рдЗрдЪреНрдЫрд╛ рдереАред рд▓реЗрдХрд┐рди рд╕рдордп рдирд╣реАрдВ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦрддреНрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред

рд▓реЗрдЬрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ using UnityEngine; public class Laser : MonoBehaviour { public Vector2 vector2; public bool active = true; public GameObject laserActive; public LineRenderer lr1; public Transform tr; public BoxCollider2D bcl; public Damage dmg; private void Start() { lr1.startColor = lr1.endColor = LaserColor(); } public Color LaserColor() { Color c = new Color(0f, 0f, 0f, 1f); switch (dmg.GetTypeLaser().Type2int()) { case 1: c = new Color(1f, 0f, 0f, 1f); break; case 2: c = new Color(0f, 1f, 0f, 1f); break; case 3: c = new Color(0f, 0f, 0f, 0.4901961f); break; case 4: c = new Color(1f, 0.8823529f, 0f, 1f); break; case 5: c = new Color(0.6078432f, 0.8823529f, 0f, 1f); break; case 6: c = new Color(1f, 0.2745098f, 0f, 1f); break; } return c; } private void Update() { LaserUpdate(); } private void LaserUpdate() { if (active == true) { Vector2[] act1 = Points(tr.position, -tr.up); lr1.SetPosition(0, act1[0]); lr1.SetPosition(1, act1[1]); bcl.size = new Vector2(0.1f, 0.1f); bcl.offset = act1[2]; } return; } private Vector2[] Points(Vector2 start, Vector2 end) { Vector2[] ret = new Vector2[3]; RaycastHit2D hit = Physics2D.Raycast(tr.position, -tr.up, 200f); ret[0] = tr.position; ret[1] = hit.point; vector2 = ret[1]; float distance = Vector2.Distance(tr.position, hit.point); bcl.size = new Vector2(0.1f, 0.1f); if (hit.collider == bcl) { ret[2] = new Vector2(0f, 0.5f); } else { ret[2] = new Vector2(0f, -distance - 0.2f); } return ret; } }
рдмрдо рдЕрдВрддрд┐рдо рдЬрд╛рд▓ рдерд╛, рдФрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдиреБрдХрд╕рд╛рди рдЙрдард╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕реЗ рдЬреБрдбрд╝реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╣реЗрд▓реНрдердмрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдмрдо рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдФрд░ рдЗрд╕рдХреА рднреМрддрд┐рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ред рдФрд░ рдЕрдВрдд рдореЗрдВ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдХрд╛рдлреА рдпреЛрдЧреНрдп рдирд┐рдХрд▓рд╛ред

рдзрдорд╛рдХрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ using System.Collections; using UnityEngine; public class Explosion : GlobalFunctions { public float power = 1f; public float radius = 5f; public float health = 20f; public float timeOffsetExplosion = 1f; public GameObject[] contacts = new GameObject[0]; public Animator expAnim; public bool writeContacs = true; public AudioClip setClip; private float timeOffsetExplosionCount; private float alphaTimer; private bool isTimerOn = false; private bool firstAPEvirtual = true; private Collider2D cl; private Rigidbody2D rb; private SpriteRenderer sr; private AudioBase audioBase; private Explosion explosion; private void Awake() { audioBase = GameObject.FindWithTag("MainCamera").GetComponent<AudioBase>(); cl = GetComponent<Collider2D>(); rb = GetComponent<Rigidbody2D>(); sr = GetComponent<SpriteRenderer>(); explosion = GetComponent<Explosion>(); } private void Start() { alphaTimer = sr.color.a; StartCoroutineTimerOffsetExplosion(); } private void OnCollisionEnter2D(Collision2D collision) { if (writeContacs == true) { int cont = contacts.Length; GameObject[] n = new GameObject[cont + 1]; if (cont != 0) { for (int i = 0; i < cont; i++) { n[i] = contacts[i]; } } n[cont] = collision.gameObject; contacts = n; } } private void OnCollisionExit2D(Collision2D collision) { if (writeContacs == true) { int cont = contacts.Length; if (cont != 1) { int counter = 0; GameObject[] n = new GameObject[cont - 1]; for (int i = 0; i < cont; i++) { if (contacts[i] != collision.gameObject) { n[counter] = contacts[i]; counter++; } } contacts = n; } else { contacts = new GameObject[0]; } } } public void ActionExplosionEmulation(GameObject obj) { float damage = 0f; if (obj.CompareTag("Laser")) { damage = obj.GetComponent<Damage>().senDamage; } else { damage = obj.GetComponent<Power>().power; } health = health - damage; StartCoroutineTimerOffsetExplosion(); return; } public void StartCoroutineTimerOffsetExplosion() { if (health <= 0f && isTimerOn == false) { isTimerOn = true; timeOffsetExplosionCount = timeOffsetExplosion; StartCoroutine(TimerOffsetExplosion(0.1f)); } } private IEnumerator TimerOffsetExplosion(float timeTick) { yield return new WaitForSeconds(timeTick); timeOffsetExplosionCount = timeOffsetExplosionCount - timeTick; if (timeOffsetExplosionCount > 0f) { float c = timeOffsetExplosionCount / timeOffsetExplosion; sr.color = new Color(1f, c, c, alphaTimer); StartCoroutine(TimerOffsetExplosion(timeTick)); } else { ExplosionAction(); } } private void ExplosionAction() { rb.gravityScale = 0f; rb.velocity = Vector2.zero; audioBase.SetSound(setClip, 2, 1f, TypePlaying.Sound, false); Destroy(cl); CircleCollider2D c = gameObject.AddComponent<CircleCollider2D>(); c.isTrigger = true; c.radius = radius; tag = "Explosion"; if (PlayerPrefs.GetString("graphicsquality") != "high") { Destroy(sr); StartCoroutine(Off()); } else { expAnim.enabled = true; StartCoroutine(Off2High()); } } public IEnumerator Off() { yield return new WaitForSecondsRealtime(0.1f); gameObject.SetActive(false); } public IEnumerator OffHigh(CircleCollider2D c) { yield return new WaitForSecondsRealtime(0.1f); c.enabled = false; } public IEnumerator Off2High() { yield return new WaitForSecondsRealtime(1.5f); gameObject.SetActive(false); } public void APEvirtual() { int cont = contacts.Length; if (cont != 0 && firstAPEvirtual == true) { firstAPEvirtual = false; for (int i = 0; i < cont; i++) { if (contacts[i] != null) { if (contacts[i].GetComponent<PhysicsEmulation>()) { contacts[i].GetComponent<PhysicsEmulation>().ExplosionPhysicsEmulation(explosion); } } } } } public void AnimFull() { sr.color = new Color(1f, 1f, 1f, 1f); sr.size = new Vector2(3f * radius, 3f * radius); return; } }
рд╕рдВрдкреВрд░реНрдг рдХреНрд╖рддрд┐ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕ рдмрд╛рд░, рдбреИрдореЗрдЬ рдиреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдиреБрдХрд╕рд╛рди рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЛ рдПрдХ рдбреИрдореЗрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛, рдФрд░ рдПрдХ рд╕рдорд╛рди ActionPhysicsEmulation рд╡рд┐рдзрд┐ рдХреЛ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ (рдЕрдВрдд рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд╖рддрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдЕрдиреБрдХреВрд▓рд┐рдд рд╡рд┐рдзрд┐ рд▓рд┐рдЦреА рдЧрдИ рдереА)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд╖рддрд┐ рдХреА рддреАрд╡реНрд░рддрд╛ рд╡рд╕реНрддреБ рдХреА "рддрд╛рдХрдд" рдХреА рддреАрд╡реНрд░рддрд╛ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ рдереА (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдЦрд┐рд▓рд╛рдбрд╝реА рдкрд░ рдереА)ред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдХреЗрд╡рд▓ рдпреЗ 3 рдкрд╣реЗрд▓рд┐рдпрд╛рдБ рдореВрд▓ рд╕реЗ рдКрдкрд░ рдПрдХ рдХрдЯ рдереАрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд░реБрдХрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдерд╛: рдореИрдВ рдкреВрд░реЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдирд╣реАрдВ рднреВрд▓рддрд╛ рдерд╛ред рддреЛ рдпрд╣ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рдмрд▓ рдХреНрд╖реЗрддреНрд░ (рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддрд╛ рд╣реИ, рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдорд╛рд░рддрд╛ рд╣реИ)

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡реЗрд▓реЛрд╕рд┐рдЯреАрдлрд┐рд▓реНрдб using UnityEngine; public class VelocityField : GlobalFunctions { public float percent = 10f; public float damage = 0.01f; public float heal = 0.01f; public GameObject[] contacts = new GameObject[0]; private HealthBar hb; private void Awake() { hb = GameObject.FindWithTag("MainCamera").GetComponent<Management>().healthBar; } private void FixedUpdate() { if (contacts.Length != 0) { for (int i = 0; i < contacts.Length; i++) { if (contacts[i] != null) { if (contacts[i].GetComponent<Rigidbody2D>()) { float s = Time.fixedDeltaTime / 0.03f; Vector2 vel = contacts[i].GetComponent<Rigidbody2D>().velocity; contacts[i].GetComponent<Rigidbody2D>().velocity = vel / 100f * (100f - percent * s); } } else { contacts = Remove(contacts, i); } } } } private void OnTriggerEnter2D(Collider2D collision) { if (collision.GetComponent<Rigidbody2D>()) { Rigidbody2D rb2 = collision.GetComponent<Rigidbody2D>(); if (rb2.isKinematic == false) { VelocityInput vi = collision.GetComponent<VelocityInput>(); vi.fields = Add(vi.fields, gameObject); rb2.gravityScale = 0f; rb2.freezeRotation = true; vi.inVelocityField = true; if (collision.GetComponent<Destroy>()) { collision.GetComponent<Destroy>().ActiveTimerDeleteChange(300f); } if (collision.tag == "Player") { hb.StartVFRad(damage); } contacts = Add(contacts, collision.gameObject); } } } public void OnTriggerExit2D(Collider2D collision) { if (collision.GetComponent<Rigidbody2D>()) { Rigidbody2D rb2 = collision.GetComponent<Rigidbody2D>(); if (rb2.isKinematic == false) { VelocityInput vi = collision.GetComponent<VelocityInput>(); vi.fields = Remove(vi.fields, gameObject); if (vi.fields.Length != 0) { rb2.gravityScale = 0f; rb2.freezeRotation = true; vi.inVelocityField = true; } else { rb2.gravityScale = 1f; rb2.freezeRotation = false; vi.inVelocityField = false; } if (collision.GetComponent<Destroy>()) { collision.GetComponent<Destroy>().ActiveTimerDeleteChange(60f); } if (collision.tag == "Player") { hb.EndVFRad(heal); } contacts = Remove(contacts, collision.gameObject); } } } }
рд╕реНрдЯреЙрдореНрдк (рдЙрд╕рдиреЗ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдорд╛рд░ рдбрд╛рд▓рд╛, рдЙрдиреНрд╣реЗрдВ рдХреБрдЪрд▓ рджрд┐рдпрд╛)

рдЯреНрд░рдореНрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ using UnityEngine; public class TrampAnim : MonoBehaviour { public float speed = 0.1f; public float speedOffset = 0.01f; public float damage = 1f; private float sc; private float maxDis; public Vector3 start; public Vector3 end; public TrampAnim ender; public bool active = true; public bool trigPlayer = false; private AudioSet audioSet; private bool audioAct; private Transform tr; private HealthBar hb; public int count = 0; public void Start() { if (active) { tr = transform; maxDis = Vector2.Distance(start, end); sc = Vector2.Distance(tr.localPosition, start) / maxDis; hb = Camera.main.GetComponent<Management>().healthBar; audioAct = GetComponent<AudioSet>(); if (audioAct) { audioSet = GetComponent<AudioSet>(); } } } public void Update() { if (active) { float s = Time.fixedDeltaTime / 0.03f * (Time.deltaTime / 0.03f); if (count == 0) { tr.localPosition = Vector2.MoveTowards(tr.localPosition, end, (speed * sc + speedOffset) * s); if (tr.localPosition == end) { count = 1; if (trigPlayer && ender.trigPlayer) { hb.Damage(100f, tag, Vector2.zero); } if (audioAct) { audioSet.SetMusic(); } } } else { tr.localPosition = Vector2.MoveTowards(tr.localPosition, start, (speed * sc + speedOffset) * s); if (tr.localPosition == start) { count = 0; } } sc = Vector2.Distance(tr.localPosition, start) / maxDis; } } public void OnCollisionEnter2D(Collision2D collision) { Transform trans = collision.transform; string tag = trans.tag; if (tag == "Player") { trigPlayer = true; } else if (active == false) { if (trans.GetComponent<PhysicsEmulation>()) { trans.GetComponent<PhysicsEmulation>().TrampAnimPhysicsEmulation(GetComponent<TrampAnim>()); } } } public void OnCollisionExit2D(Collision2D collision) { string tag = collision.transform.tag; if (tag == "Player") { trigPlayer = false; } } }
рд╡рд┐рдХрд┐рд░рдг (рдЬреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ)

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдбрд┐рдПрд╢рди using System.Collections; using UnityEngine; public class Radiation : MonoBehaviour { public bool isActiveRadiation = false; private Management m; private HealthBar hb; private void Awake() { gameObject.SetActive(PlayerPrefs.GetString("ai") == "off"); m = GameObject.FindWithTag("MainCamera").GetComponent<Management>(); hb = m.healthBar; } private void Start() { StartCoroutine(RadiationDamage()); } public IEnumerator RadiationDamage() { yield return new WaitForSeconds(0.0002f); if (isActiveRadiation) { hb.StraightDamage(0.0002f, "Radiation"); } StartCoroutine(RadiationDamage()); } public void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { isActiveRadiation = true; hb.animator.SetBool("isVisible", true); } } public void OnTriggerExit2D(Collider2D collision) { if (collision.tag == "Player") { isActiveRadiation = false; hb.animator.SetBool("isVisible", false); if (hb.healthBarImage.fillAmount == 0f) { m.StartGraphics(); } } } public void OnCollisionEnter2D(Collision2D collision) { if (collision.transform.tag == "Player") { hb.animator.SetBool("isVisible", false); PlayerPrefs.SetString("ai", "on"); gameObject.SetActive(false); } } }
рдЯреНрд░реИрдк (рдПрдХ рдиреАрд▓реА рдЧреЗрдВрдж рдЬреЛ рдЫреВрдиреЗ рдкрд░ рдорд╛рд░ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдж рд╡рд░реНрд▓реНрдбреНрд╕ рд╣рд╛рд░реНрдбреЗрд╕реНрдЯ рдЧреЗрдо рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ)
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдерд▓реЗрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯ using UnityEngine; public class DeathlessScript : MonoBehaviour { private HealthBar hb; private void Awake() { hb = Camera.main.GetComponent<Management>().healthBar; } public void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { hb.Damage(10f, tag, Vector2.zero); } } }
рдореИрдВрдиреЗ рдбреИрдореЗрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрди рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреБрдХрд╕рд╛рдиреЛрдВ рдХреЛ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдЖрдо рддреМрд░ рдкрд░ рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рдереЗред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЕрддрд┐рд░рд┐рдХреНрдд рдпрд╛рдВрддреНрд░рд┐рдХреА рд▓рд╛рдЗрди рдореЗрдВ рдЖ рдЧрдПред
рдЕрддрд┐рд░рд┐рдХреНрдд рдпрд╛рдВрддреНрд░рд┐рдХреАрдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╡рд┐рдз рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдХрд╛рдлреА рдХреБрдЫ рдереЗ, рддрд╛рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдмреНрдпрд╛рдЬ рдХреЗ рдереЗ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдереЗ рдХрд┐ рд╡реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЦреЗрд▓ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдереЗред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд╣рд▓реЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рджреНрд╡рд╛рд░ рдереЗред рдмрд╣реБрдд рдкрд╣рд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХред рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрд╣рд╛рдБ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрд╡рд░реЛрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рднреА рд╣реИрдВ: рд╕рдХреНрд░рд┐рдпрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рд░реНрдЯ рд╕реНрдЯреЗрдЯ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИ рдФрд░ рд╕рдХреНрд░рд┐рдпрдг рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдирд╛рдо рдорд┐рд╢реНрд░рд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИ)ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреЗрдЯ using UnityEngine; using System.Collections; public class Gate : MonoBehaviour { [Header("StartSet")] public Vector2 gateScale = new Vector2(1, 4); public float speed = 0.1f; public bool isReverse = false; public bool isEnd = true; public Vector2 animSetGateScale = new Vector2(); public Vector2 target = new Vector2(); [Header("SpriteEditor")] public Sprite mainSprite; [Header("Assets")] public GameObject door1; public GameObject door2; private IEnumerator fixUpdate; private void Start() { SpriteRenderer ds1 = door1.GetComponent<SpriteRenderer>(); SpriteRenderer ds2 = door2.GetComponent<SpriteRenderer>(); ds1.sprite = mainSprite; ds2.sprite = mainSprite; if (isReverse == false) { animSetGateScale = target = gateScale; } fixUpdate = FixUpdate(); SetGate(animSetGateScale); } private IEnumerator FixUpdate() { yield return new WaitForSeconds(0.03f); if (animSetGateScale != target) { float s = Time.fixedDeltaTime / 0.03f; animSetGateScale = Vector2.MoveTowards(animSetGateScale, target, speed * s); SetGate(animSetGateScale); StartCoroutine(FixUpdate()); } } private void SetGate(Vector2 scale) { SpriteRenderer ds1 = door1.GetComponent<SpriteRenderer>(); SpriteRenderer ds2 = door2.GetComponent<SpriteRenderer>(); Vector2 size = new Vector2(mainSprite.texture.width, mainSprite.texture.height); float k = size.x / size.y; ds1.size = new Vector2(gateScale.x, scale.y / 2f); ds2.size = new Vector2(gateScale.x, scale.y / 2f); BoxCollider2D d1 = door1.GetComponent<BoxCollider2D>(); BoxCollider2D d2 = door2.GetComponent<BoxCollider2D>(); d1.size = new Vector2(gateScale.x, scale.y / 2f); d2.size = new Vector2(gateScale.x, scale.y / 2f); door1.transform.localScale = new Vector3(1f, 1f, 1f); door2.transform.localScale = new Vector3(1f, 1f, 1f); door1.transform.localPosition = new Vector3(0f, (gateScale.y / 2f) - (scale.y / 4f), 0f); door2.transform.localPosition = new Vector3(0f, -(gateScale.y / 2f) + (scale.y / 4f), 0f); } public void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player")) { if (isReverse == false) { target = Vector2.zero; } else { target = gateScale; } StopCoroutine(fixUpdate); fixUpdate = FixUpdate(); StartCoroutine(fixUpdate); } } private void OnTriggerExit2D(Collider2D collision) { if (collision.CompareTag("Player") && isEnd == true) { if (isReverse == false) { target = gateScale; } else { target = Vector2.zero; } StopCoroutine(fixUpdate); fixUpdate = FixUpdate(); StartCoroutine(fixUpdate); } } }
рдЗрд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднреМрддрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрд╛рд╕ рдереАред рдирд╣реАрдВ, рдпреЗ рд╡рд┐рдирд╛рд╢ рд╕реЗ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИрдВ, рдпреЗ рд╕рд┐рд░реНрдл рднреМрддрд┐рдХ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрдиреНрд╣реЗрдВ рдирд╖реНрдЯ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдкрд╣реЗрд▓рд┐рдпреЛрдВ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдиреНрдп рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреЗрдЯ рдХреЗ рд╕рд╛рде: рдЬрдм рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреЗрдЯ рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдЫреВрддрд╛ рд╣реИ, рддреЛ рдЧреЗрдЯ рдЦреБрд▓рддрд╛ рд╣реИред
рдЬрдм рд╕реЗ рдореИрдВрдиреЗ "рдЦреБрдж рдХреА рд╢рдХреНрддрд┐" рд╕реАрдЦреА, рддрдм рддрдХ рддреАрди рдпрд╛рдВрддреНрд░рд┐рдХреА рдиреЗ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ред рдпреЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХреЛрдб рдХреЗ рд╕рд╛рде рдЯреНрд░рд┐рдЧрд░ рдереЗ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдиреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рд░реНрдп рдХрд┐рдПред рдкрд╣рд▓рд╛ рдПрдХ рдмрд▓ рдХреНрд╖реЗрддреНрд░ рдерд╛ (рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░рдХ рджреНрд╡рд╛рд░рд╛ рдмрд▓ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛)ред рдмрд┐рдВрджреБ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рджреВрд╕рд░реА рдЬреЛрдбрд╝реА рдЧрдИ рддрд╛рдХрдд рдФрд░ рдмрд┐рдВрджреБ рдореЗрдВ "рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг" рдерд╛ред рддреАрд╕рд░рд╛ рджреБрд░реНрдШрдЯрдирд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рдЬрдм рд╢реВрдиреНрдп рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд╣реЗрд▓реА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдереА, рддреЛ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдЗрд╕реЗ рдмрдЪрд╛ рд▓рд┐рдпрд╛ред рдЗрд╕рдореЗрдВ, рд╡рд╕реНрддреБ рдмрд▓ рдХреА рджрд┐рд╢рд╛ рдХреЛ рдмрджрд▓ рджреЗрддреА рд╣реИ, рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдмрджрд▓реЗ рдмрд┐рдирд╛, рдЗрд╕рдХреА рддреАрд╡реНрд░рддрд╛ред

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд╛рдЗрдерд╛рдЧреЛрд░рд╕ рдкреНрд░рдореЗрдп рджреНрд╡рд╛рд░рд╛, рдХрд░реНрдг рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЧреБрдгрд╛рдВрдХ рд╣реИ рдФрд░ рддрд╛рдХрдд рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рддрдм рдХреЛрдг рдХреА рдЧрдгрдирд╛ Atan2 рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдСрдлрд╕реЗрдЯрдПрдВрдЧрд▓ рдХреЛ рдХреЛрдиреЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдЗрди рдФрд░ рдХреЛрд╕рд╛рдЗрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЧреБрдгрд╛рдВрдХ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрджрд▓реА рд╣реБрдИ рджрд┐рд╢рд╛ рдХреЛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдмрд▓ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
public Vector2 RotateVector(Vector2 a, float offsetAngle) { float power = Mathf.Sqrt(ax * ax + ay * ay); float angle = Mathf.Atan2(ay, ax) * Mathf.Rad2Deg - 90f + offsetAngle; return Quaternion.Euler(0, 0, angle) * Vector2.up * power; }
рдЗрд╕ рдкрд░, рдПрдХреНрд╕рдЯреНрд░рд╛ рдХреА рдореЗрд░реА рдкреВрд░реА рдХрд▓реНрдкрдирд╛ рд╕реВрдЦ рдЧрдИред рд╣рд╛рдВ, рд░рд╕реНрд╕реА, рдХреЗрдмрд▓ рдХрд╛рд░ рдЖрджрд┐ рдкрд░ рдмрдо рдЬреИрд╕реЗ рд╡рд┐рдЪрд╛рд░ рдереЗред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛: рдЖрдкрдХреЛ рдЧреЗрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рднреА, рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдИрдорд╛рдирджрд╛рд░ рд░рд╣реВрдВрдЧрд╛: рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдо рдЦреЗрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЦреЗрд▓ рдЕрд╕рд╣рдиреАрдп рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рд╢рд╛рдпрдж рд╣реА рдХреЛрдИ рдореЗрд░рд╛ рдЦреЗрд▓ рдЦреЗрд▓реЗрдЧрд╛ред рдореИрдВрдиреЗ рдЙрди рдкрд╣реЗрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдПрдХ рд╣рд┐рдЯ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдорд╛рд░рддреА рдереАрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рдирд╛рд╢ рдХреА рд╡рдЬрд╣ рд╕реЗ рдиреБрдХрд╕рд╛рди рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░ рдлрд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рдпрд╛рдВрддреНрд░рд┐рдХреА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛: рдмреВрд╕реНрдЯрд░ рдпрд╛ рд╕рдВрд╢реЛрдзрдХред
рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрд╕реНрдерд╛рдпреА рд╕реБрдзрд╛рд░ рджрд┐рдП рдЬреЛ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред 5 рдмреВрд╕реНрдЯрд░ рдереЗ: рдЙрдкрдЪрд╛рд░, рдЕрдорд░рддрд╛, рд╕рдордп рдХрд╛ рдлреИрд▓рд╛рд╡ (рдзреАрдорд╛ рдореЛ), рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред
рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдирдХ рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛: рдЯреНрд░рд┐рдЧрд░ рдЧреЗрдВрджреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рд╕реНрддрд░ рдкрд░ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрди рдмреВрд╕реНрдЯрд░ рдХреЛ рд▓реЗрдЬрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ред рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред

рдЕрдм рд▓реЗрдЬрд░ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ 5 рддрд░реАрдХреЗ рд╣реИрдВ: рдХреНрд╖рддрд┐ рдФрд░ рдЙрдкрдЪрд╛рд░, рдЕрдорд░рддрд╛, рд╕рдордп рдХрд╛ рдлреИрд▓рд╛рд╡ (рдзреАрдорд╛ рдореЛ), рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред рдпрд╣ рд╡рд╣реА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде: рд▓реЗрдЬрд░ рд▓рдЧрд╛рддрд╛рд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рд▓реЗрдЬрд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдкреНрд░рднрд╛рд╡ рддреБрд░рдВрдд рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдпрд╛ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж)ред рд╣рд╛рдВ, рдмреВрд╕реНрдЯрд░ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рдЪреАрдЬ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЬрд░ рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИрдВ (рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреВрд░рд╛ рдЦреЗрд▓)ред
рдЦреЗрд▓ рдХреЗ рднреМрддрд┐рдХ рд╡рд┐рд╖рдп рдиреЗ рдПрдХ рдЯреНрд░рдореНрдкреЛрд▓рд┐рди рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдлреИрд▓рд╛рдиреЗ рдФрд░ рдлрд┐рд░ рджреАрд╡рд╛рд░ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ PhysicsMaterial рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд░рд▓ BoxCollider2D рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрдЫрд╛рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЙрдЫрд╛рд▓ рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдШреБрдорд╛рдпрд╛ рдЧрдпрд╛ рдерд╛)ред
рдФрд░ рдЦреЗрд▓ рдХреА рд╕реИрдВрдбрдиреЗрд╕ рдиреЗ рдЖрдкрдХреЛ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдореВрд▓ рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд╕реНрддреБ рдХреЛ рдмрд┐рдВрджреБ рд╕реЗ рдмрд┐рдВрджреБ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдпрд╛ рд╡рд╕реНрддреБ рдХреЛ рдШреБрдорд╛рдпрд╛ред рдкрд╣рд▓реЗ, рдЙрдирдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рд░реНрдп рдереЗ: рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдПрдирд┐рдореЗрдЯреЗрдб рд░реВрдк рд╕реЗ рдШреБрдорд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдЕрдВрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░), рд╕реНрдХреЗрд▓ (рдЕрдВрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░), рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд▓реЗрдмрд▓, рдЖрджрд┐ред рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдпреЗ рдирд╛рд╕реНрддрд┐рдХрддрд╛рдПрдВ рдереАрдВ, рдЬреЛ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреА рдереАрдВ, рдореБрдЭреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдирд╛рдо рдкрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╛рдЯ рджреЗрдирд╛ рдкрдбрд╝рд╛ред рдПрдиреАрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рднреА рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдиреАрдореЗрд╢рди рджрд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛: "рдореВрд▓ рдореЗрдВ рдПрдирд┐рдореЗрд╢рди рдХреА рдмрд╣реБрдд рдХрдореА рдереА!" рдХреЗрд╡рд▓ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ:
рдмреЗрд╕рд┐рдХрдПрдиреАрдореЗрд╢рди рдФрд░ рдкреЙрдЗрдВрдЯрдПрдирд┐рдореЗрд╢рдиред
рдмреЗрд╕рд┐рдХрдПрдиреАрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ using UnityEngine; using System.Collections; public class BasicAnimation : GlobalFunctions { public AnimationType animationType = AnimationType.Infinity; public float speedSpeed = 0.05f; public float rotation = 0f; private bool make = true; private bool animMake = false; private bool isMoved = false; private Transform tr; private float rotationActive = 0f; public void SetPos(bool pos, float m) { rotationActive = rotation * (pos ? 1 : m); } private void Start() { tr = transform; animMake = false; switch (animationType) { case AnimationType.Infinity: make = true; isMoved = true; rotationActive = rotation; break; case AnimationType.Start: make = false; isMoved = false; break; case AnimationType.End: make = true; isMoved = true; rotationActive = rotation; break; case AnimationType.All: make = false; isMoved = false; break; } } public void TimerAnim(float timer, bool anim) { StartAnim(anim); StartCoroutine(TimerTimerAnim(timer, anim)); } private IEnumerator TimerTimerAnim(float timer, bool anim) { yield return new WaitForSeconds(timer); EndAnim(anim); } public void StartAnim(bool anim) { make = true; if (anim == true) { animMake = true; isMoved = true; } else { rotationActive = rotation; } } public void EndAnim(bool anim) { if (anim == true) { animMake = true; isMoved = false; } else { make = false; rotationActive = 0f; } } private void FixedUpdate() { if (animMake == true) { if (isMoved == true) { if (rotationActive != rotation) { rotationActive = Mathf.MoveTowards(rotationActive, rotation, speedSpeed); } else { animMake = false; isMoved = false; } } else { if (rotationActive != 0f) { rotationActive = Mathf.MoveTowards(rotationActive, 0f, speedSpeed); } else { animMake = false; isMoved = true; } } } } private void Update() { if (make == true) { float rot = tr.localEulerAngles.z; float s = Time.fixedDeltaTime / 0.03f * (Time.deltaTime / 0.03f); tr.localEulerAngles = new Vector3(0f, 0f, rot + rotationActive * s); } } }
рдкреЙрдЗрдВрдЯрдПрдиреАрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ using UnityEngine; using System.Collections; public class PointsAnimation : GlobalFunctions { public AnimationType animationType = AnimationType.Infinity; public float speedSpeedPosition = 0.001f; public float speedPosition = 0.1f; public Vector3[] pointsPosition = new Vector3[0]; public int counterPosition = 0; private float speedPositionActive = 0f; private int pointsPositionLength = 0; private bool make = true; private bool animMake = false; private bool isMoved = false; private Transform tr; public void SetPos(bool pos, float m) { speedPositionActive = speedPosition * (pos ? 1 : m); } private void Awake() { pointsPositionLength = pointsPosition.Length; tr = transform; switch (animationType) { case AnimationType.Infinity: make = true; isMoved = true; speedPositionActive = speedPosition; break; case AnimationType.Start: make = false; isMoved = false; break; case AnimationType.End: make = true; isMoved = true; speedPositionActive = speedPosition; break; case AnimationType.All: make = false; isMoved = false; break; } } public void TimerAnim(float timer, bool anim) { StartAnim(anim); StartCoroutine(TimerTimerAnim(timer, anim)); } private IEnumerator TimerTimerAnim(float timer, bool anim) { yield return new WaitForSeconds(timer); EndAnim(anim); } public void StartAnim(bool anim) { make = true; if (anim == true) { animMake = true; isMoved = true; } else { speedPositionActive = speedPosition; } } public void EndAnim(bool anim) { if (anim == true) { animMake = true; isMoved = false; } else { make = false; speedPositionActive = 0f; } } private void FixedUpdate() { if (animMake == true) { if (isMoved == true) { if (speedPositionActive != speedPosition) { Vector2 ends = new Vector2(-speedPosition, speedPosition); speedPositionActive = Mathf.MoveTowards(speedPositionActive, speedPosition, speedSpeedPosition); } else { animMake = false; isMoved = false; } } else { if (speedPositionActive != 0f) { Vector2 ends = new Vector2(-speedPosition, speedPosition); speedPositionActive = Mathf.MoveTowards(speedPositionActive, 0f, speedSpeedPosition); } else { animMake = false; isMoved = true; } } } } private void Update() { if (make) { if (tr.localPosition == pointsPosition[counterPosition]) { counterPosition++; if (counterPosition == pointsPositionLength) { counterPosition = 0; } } else { float s = Time.fixedDeltaTime / 0.03f * (Time.deltaTime / 0.03f); tr.localPosition = Vector3.MoveTowards(tr.localPosition, pointsPosition[counterPosition], speedPositionActive * s); } } } }
рдпреВрдЖрдИрдореВрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреГрддрд┐ рд╣реИред
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдореВрд▓ рд╣реИ:
рдпрд╣рд╛рдБ рдЕрдЧрд▓реА рдХрдбрд╝реА рд╣реИ:
рдпрд╣рд╛рдБ рдореВрд▓ рд╣реИ:
рдпрд╣рд╛рдБ рдЕрдЧрд▓реА рдХрдбрд╝реА рд╣реИ:

рдпрд╣рд╛рдБ рдЙрддреНрдкрддреНрддрд┐ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЕрдЧрд▓реА рдХрдбрд╝реА рдореЗрдВ рдиреНрдпреВрдирддрдорд╡рд╛рдж рдореБрдЭреЗ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛, рдФрд░ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рд░рдВрдЧреАрди рдард╣рд░рд╛рд╡ рдмрдЯрди рдХреЗ рдмрдЬрд╛рдп рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрдЦрд▓ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдЯрд╛рдЗрдорд░ рдХреЗ рдмрдЬрд╛рдп, рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рдЕрдм рдПрдХ lokanic, рдХреБрдЫ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдард╣рд░рд╛рд╡ рдмрдЯрди рд╣реИред рдЕрдЧрд▓реА рдХрдбрд╝реА рдЕрднреА рднреА рдореЗрдиреВ рдЬреАрддрддреА рд╣реИред рдореВрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рд░ рдЬрдЧрд╣ рдПрдирд┐рдореЗрд╢рди рд╣реИрдВ, рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ 11 рд╢реЗрдбреНрд╕ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рд╢реЗрдбрд░ рдЧреНрд░рд╛рдл рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднреА рдмреЗрд╣рддрд░ рд╣реЛ рд░рд╣реА рд╣реИ, рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗрдЯрд┐рдВрдЧ, рдЕрд▓рдЧ рдзреНрд╡рдирд┐ рдФрд░ рд╕рдВрдЧреАрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИ, рдПрдХ рдХрдВрд╕реЛрд▓ рдЬреЛ рдЖрдкрдХреЛ рдмрдЪрдд рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдореВрд▓ рдореЗрдиреВ рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд┐рдХрд▓рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЕрдиреНрдп рдЦреЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣рд╛рдБ рдФрд░ рд╡рд╣рд╛рдБ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ (рд╣рд░ рдЬрдЧрд╣ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛) рдЪреБрд░рд╛ рд▓рд┐рдпрд╛ред рдФрд░ рдпрд╣рд╛рдБ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд▓рд┐рдпрд╛:
- рдкреНрд▓реЗ рдореЗрдиреВ
рдСрд▓реНрдЯреЛ рдХреЗ рд╕рд╛рд╣рд╕рд┐рдХ рдХрд╛рд░реНрдп рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдХреЗрд╡рд▓ рдЕрдиреБрднрд╡ рдЙрдкрд╣рд╛рд╕, рдЪреБрдЯрдХреБрд▓реЗ, рд╡реНрдпрдВрдЧреНрдпрд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдЖрджрд┐ рдореЗрдВ рдмрджрд▓ рдЧрдПред - рдард╣рд░рд╛рд╡
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдСрд▓реНрдЯреЛ рд╕реЗ, рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЦреЗрд▓рддрд╛ рд╣реИред - рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рд╡реЗрдХреНрдЯрд░ 2 рд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЕрд░реНрдерд╛рддреН рдореЗрдиреВ рдФрд░ рд╡реЙрд▓реНрдпреВрдо рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХрд╛ рд░реВрдкред
рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрд┐рдпрд╛ред
рдХрдВрд╕реЛрд▓рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рд╕рдВрд░рдХреНрд╖рдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡реИрд╢реНрд╡рд┐рдХ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рджреЛ рдЪрд░ рд╣реИрдВ: рдпреЗ рдХреНрд░рдорд╢рдГ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдЧрддрд┐ рдФрд░ рдКрдВрдЪрд╛рдИ рд╣реИрдВред рдкреНрд░рдЧрддрд┐ рдЪрд░ рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рд▓рд┐рдлреНрдЯ рдЪрд░ рджреГрд╢реНрдп рдХреЗ рдЕрдВрджрд░ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЬрдм рдЖрдк "рд╕реНрдЯрд╛рд░реНрдЯ" рдпрд╛ "рд░реА-рд╕реНрдЯрд╛рд░реНрдЯ" рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЧреЗрдо рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рдЧрддрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдПрд▓реАрд╡реЗрдЯрд░реНрд╕ рдирдВрдмрд░ рдХреЗ рддрд╣рдд рдмрдЪрдд рдХрд░рдиреЗ рдкрд░ рд╕реНрдкреЙрдиреНрдЬ рдХрд░рддрд╛ рд╣реИред
рдХрдВрд╕реЛрд▓ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЪрд░ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЦреЗрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рдмрдЧ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдерд╛ред рдХрдВрд╕реЛрд▓ рд╕реНрд╡рдпрдВ рдПрдХ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдЕрдиреНрдп рдХрдВрд╕реЛрд▓ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ DebugConsole using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Collections; public class DebugConsole : MonoBehaviour { public Animator animatorBlackScreen; public Language l; public InputField inputField; public Text textDebug; private bool access = false; public void AnalyzeText() { string txt = inputField.text.ToLower(); string[] output = new string[0]; string txtLoc = ""; for (int i = 0; i < txt.Length; i++) { if (txt[i] == ' ') { if (txtLoc != "") { output = Add(output, txtLoc); txtLoc = ""; } } else { txtLoc = txtLoc + txt[i]; } } if (txtLoc != "") { output = Add(output, txtLoc); txtLoc = ""; } Analyze(output); } public void Analyze(string[] commands) { switch (commands[0]) { case "playerprefs": if (access == true) { if (commands.Length < 2) { Log(l.ConsoleLanguage(1));//1 } else { switch (commands[1]) { case "f": case "float": float f = 0f; if (float.TryParse(commands[3], out f)) { PlayerPrefs.SetFloat(commands[2], float.Parse(commands[3])); Log(l.ConsoleLanguage(2, commands[2]));//2 } else { Log(l.ConsoleLanguage(3));//3 } break; case "i": case "int": int i = 0; if (int.TryParse(commands[3], out i)) { PlayerPrefs.SetInt(commands[2], int.Parse(commands[3])); Log(l.ConsoleLanguage(4, commands[2]));//4 } else { Log(l.ConsoleLanguage(5));//5 } break; case "s": case "string": PlayerPrefs.SetString(commands[2], commands[3]); Log(l.ConsoleLanguage(6, commands[2]));//6 break; case "clear": PlayerPrefs.DeleteAll(); SceneManager.LoadScene(0); break; default: Log(l.ConsoleLanguage(7, commands[1]));//7 break; } } } else { Log(l.ConsoleLanguage(8));//8 } break; case "next": if (access == true) { if (commands.Length > 1) { switch (commands[1]) { case "level": int p = PlayerPrefs.GetInt("progress"); PlayerPrefs.SetInt("progress", p + 1); Log("ok level"); break; case "save": int s = PlayerPrefs.GetInt("elevatorsave"); PlayerPrefs.SetInt("elevatorsave", s + 1); Log("ok save"); break; case "start": PlayerPrefs.SetInt("elevatorsave", 0); Log("ok start"); break; case "end": PlayerPrefs.SetInt("elevatorsave", 1); Log("ok end"); break; } } } else { Log(l.ConsoleLanguage(8));//8 } break; case "echo": if (commands.Length == 1) { Log(l.ConsoleLanguage(9));//9 } else { switch (commands[1]) { case "vertogpro"://echo vertogpro access = true; Log(l.ConsoleLanguage(10));//10 break; default: Log(l.ConsoleLanguage(11));//11 break; } } break; case "restart": if (access == true) { SceneManager.LoadScene(0); } else { Log(l.ConsoleLanguage(12));//12 } break; case "authors": Log(l.ConsoleLanguage(13));//13 break; case "discharge": animatorBlackScreen.SetBool("isActive", true); PlayerPrefs.SetString("start", "key"); PlayerPrefs.SetString("language", "nothing"); PlayerPrefs.SetString("graphicsquality", "medium"); PlayerPrefs.SetFloat("sound", 0.5f); PlayerPrefs.SetFloat("music", 0.5f); PlayerPrefs.SetFloat("rotatenextlevel", 0f); PlayerPrefs.SetInt("elevatorsave", 0); PlayerPrefs.SetInt("progress", 1); PlayerPrefs.SetInt("deaths", 0); PlayerPrefs.SetInt("discharge", PlayerPrefs.GetInt("discharge") + 1); PlayerPrefs.SetInt("lastmenueffect", -1); PlayerPrefs.SetString("isshotmode", "false"); PlayerPrefs.SetString("boss1", "life"); PlayerPrefs.SetString("boss2", "life"); PlayerPrefs.SetString("ai", "off"); PlayerPrefs.SetString("boss3", "life"); PlayerPrefs.SetString("end", "none"); StartCoroutine(StartGame()); break; case "clear": Clear(); break; case "info": if (access == false) { Log(l.ConsoleLanguage(14));//14 } else { Log(l.ConsoleLanguage(15));//15 } break; default: Log(l.ConsoleLanguage(16, commands[0]));//16 break; } } public void Log(object message) { textDebug.text = message.ToString(); } public void Clear() { inputField.text = ""; textDebug.text = ""; } public string[] Add(string[] old, string addComponent) { string[] n = new string[old.Length + 1]; if (old.Length != 0) { for (int i = 0; i < old.Length; i++) { n[i] = old[i]; } } n[old.Length] = addComponent; return n; } public IEnumerator StartGame() { yield return new WaitForSeconds(1f); SceneManager.LoadSceneAsync(0); } }
рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕рдореЗрдВ рддрд░рд▓ рдЯреАрдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЫреЛрдбрд╝реВрдВрдЧрд╛:- рдирд┐рд░реНрд╡рд╣рди - рдЦреЗрд▓ рдкреНрд░рдЧрддрд┐ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдЕрдиреНрдп рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рднреА)
- рдЧреВрдВрдЬ vertogpro - рд╡рд┐рдХрд╛рд╕ рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреАрдо
- playerprefs [рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЗрдВрдЯ, рдлреНрд▓реЛрдЯ)] [рдЪрд░ рдирд╛рдо] [рдбреЗрдЯрд╛] - рдХрд┐рд╕реА рднреА рдЪрд░ рдХреЛ рдмрджрд▓рддрд╛ рдпрд╛ рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг: рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдкреНрд░рдЧрддрд┐ 14 рдкреНрд░рдЧрддрд┐
- рдЕрдЧрд▓рд╛ - рд╕рд░рд▓реАрдХреГрдд рд╕реНрддрд░ рдХреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде:
- рд╢реБрд░реВ - рд╕реНрддрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрдЪрд╛рддрд╛ рд╣реИ (рдЕрдЧрд▓реА рд╢реБрд░реБрдЖрдд)
- рдЕрдВрдд - рд╕реНрддрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрдЪрд╛рддрд╛ рд╣реИ (рдЕрдЧрд▓рд╛ рдЕрдВрдд)
- рдмрдЪрд╛рдУ - рдЕрдЧрд▓реЗ рдмрдЪрд╛рдУ (рдЕрдЧрд▓рд╛ рдмрдЪрд╛рдУ) рдХреЗ рд▓рд┐рдП рджреВрд░рд╕рдВрдЪрд╛рд░
- рд╕реНрддрд░ - рдЕрдЧрд▓реЗ рд╕реНрддрд░ (рдЕрдЧрд▓реЗ рд╕реНрддрд░) рдкрд░ рджреВрд░рд╕рдВрдЪрд╛рд░
рдЧреНрд░рд╛рдлрд┐рдХреНрд╕рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдирд╣реАрдВ рд╕реАрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдбреНрд░рд╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдореВрд▓ рдореЗрдВ рд╕рдорд╛рди рдХрд┐рдпрд╛: рдореИрдВрдиреЗ рдореЗрдХреНрд░рд╛рдлреНрдЯ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 30 рдмрдирд╛рд╡рдЯ рдкреИрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕реЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореБрдЦреНрдп рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдирд┐рдХрд▓рд╛ред рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдореВрд▓ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рдереЗ рдФрд░ рдЗрд╕рдиреЗ рдореБрдЭреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдореБрдЭреЗ рдЗрддрдирд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд┐рднрд┐рдиреНрди рдПрдирд┐рдореЗрдЯреЗрдб рдкреНрд░рднрд╛рд╡ (рд╡рд┐рд╕реНрдлреЛрдЯ, рдЖрдЧ рдЖрджрд┐) рдорд┐рд▓реЗ рдФрд░ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рд╕реНрдЯреЛрд░ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдмрдирд╛рд╡рдЯ рдкреИрдХ рдХреЛ рдкрдВрдк рдХрд┐рдпрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдо рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рдЧрддрд┐ рдЕрднреА рднреА рджреЗрдЦреА рдЬрд╛ рд░рд╣реА рд╣реИред рдпрд╣рд╛рдБ рдореВрд▓ рд╣реИ:
рдФрд░ рдпрд╣рд╛рдБ рдХреА рдЕрдЧрд▓реА рдХрдбрд╝реА рд╣реИ:рдмрдЪрддрдпрджрд┐ рдмрдЪрдд рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд░рд▓ рд╣реИ, рддреЛ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдирд╣реАрдВ рд╣реИред рд╕рд╣реЗрдЬреЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ 3 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ:- рдПрд▓реЗрд╡реЗрдЯрд░рдмреЗрд╕ рд╡рд╣ рдиреАрдВрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдЯреАрдореЗрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕рдореЗрдВ, рд▓рд┐рдлреНрдЯ рдЪрд░ рджреНрд╡рд╛рд░рд╛, рд╕рдХреНрд░рд┐рдп рд╕реЗрд╡ рдХреЛ рд╕реЗрд╡ рдПрд░реЗ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрд▓реЗрд╡реЗрдЯрд░рдмреЗрд╕ using UnityEngine; using System.Collections; public class ElevatorBase : MonoBehaviour { public GameObject[] savers = new GameObject[0]; public float inputStartBlock = 1f; private GameUI gameUI; public void Awake() { int l = savers.Length; if (l != 0) { for (int i = 0; i < l; i++) { if (savers[i] != null) { if (savers[i].GetComponent<Saving>()) { Saving saving = savers[i].GetComponent<Saving>(); saving.isFirst = false; saving.idElevatorBase = i; } else if (savers[i].GetComponent<Elevator>()) { savers[i].GetComponent<Elevator>().isFirst = false; } } } int es = PlayerPrefs.GetInt("elevatorsave"); if (savers[es] != null) { if (savers[es].GetComponent<Saving>()) { savers[es].GetComponent<Saving>().isFirst = true; } else if (savers[es].GetComponent<Elevator>()) { savers[es].GetComponent<Elevator>().isFirst = true; } } else { gameUI = GameObject.FindWithTag("Canvas").GetComponent<GameUI>(); StartCoroutine(BlockEnabled()); GameObject.Find("TipsInput").GetComponent<TipsGamePlayInput>().active = true; } } else { gameUI = GameObject.FindWithTag("Canvas").GetComponent<GameUI>(); gameUI.ChangeisBlocked(); } } public IEnumerator BlockEnabled() { yield return new WaitForSeconds(inputStartBlock); GameObject block = gameUI.block.gameObject; block.SetActive(false); } }
- Saving тАФ , , , elevatorsave id.
Saving using System.Collections; using UnityEngine; public class Saving : MonoBehaviour { public Saving[] savings; public Vector2 startPos; public float startRot; public bool isActive = true; public bool isFirst = true; public int idElevatorBase = 0; public TipsGamePlayInput tgpi; private GameObject player; private GameObject cam; private Transform trp; private GameUI gameui; private Management m; private Saving self; private void Start() { self = GetComponent<Saving>(); cam = GameObject.FindWithTag("MainCamera"); m = cam.GetComponent<Management>(); gameui = GameObject.FindWithTag("Canvas").GetComponent<GameUI>(); player = m.player; trp = player.GetComponent<Transform>(); if (isFirst) { trp.position = startPos; m.Set(startRot); OfferSaves(); } isActive = !isFirst; tgpi.SetActive(!isFirst); StartCoroutine(BlockFalse()); } public IEnumerator BlockFalse() { yield return new WaitForSeconds(1f); gameui.block.gameObject.SetActive(false); } private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player") && isActive == true) { isActive = false; PlayerPrefs.SetInt("elevatorsave", idElevatorBase); OfferSaves(); } } public void OfferSaves() { if (savings.Length != 0) { for (int i = 0; i < savings.Length; i++) { savings[i].isActive = false; savings[i].tgpi.SetActive(false); } } } }
- Elevator тАФ , . : ( ).
Elevator using System.Collections; using UnityEngine; public class Elevator : GlobalFunctions { public Vector2 endPos; public Vector2 startPos; public int nextScene = 1; public int nextElevatorSave = 0; public float speed = 0.1f; public bool isFirst = true; public bool isActive = true; public bool isReverse = false; public bool isMake = false; private GameObject player; private Rigidbody2D rb; private Transform tr; private Transform trp; private GameUI gameui; private AudioBase audioBase; private Transform cam; private void Start() { audioBase = GameObject.FindWithTag("MainCamera").GetComponent<AudioBase>(); gameui = GameObject.FindWithTag("Canvas").GetComponent<GameUI>(); player = gameui.m.player; rb = player.GetComponent<Rigidbody2D>(); trp = player.GetComponent<Transform>(); tr = GetComponent<Transform>(); cam = gameui.m.transform; startPos = tr.position; if (isFirst) { trp.position = startPos; rb.velocity = new Vector2(); rb.gravityScale = 0f; gameui.m.Set(); } else { tr.position = endPos; isMake = true; } isActive = isFirst; isReverse = false; } private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player") && isMake == true) { isReverse = true; isActive = true; rb.velocity = new Vector2(); rb.gravityScale = 0f; gameui.block.gameObject.SetActive(true); PlayerPrefs.SetInt("elevatorsave", nextElevatorSave); gameui.animatorBlackScreenGame.SetBool("isActive", true); audioBase.LowerSound(0.05f, 16, 0, TypePlaying.Music); StartCoroutine(NumSaveRotate()); StartCoroutine(gameui.StartGame(1.5f, nextScene)); } } private IEnumerator NumSaveRotate() { yield return new WaitForSeconds(1.5f); PlayerPrefs.SetFloat("rotatenextlevel", Stable(cam.localEulerAngles.z, -180f, 180f)); } private void FixedUpdate() { if (isActive == true) { float s = Time.fixedDeltaTime / 0.03f; if (isReverse == false) { rb.velocity = new Vector2(); tr.position = Vector2.MoveTowards(tr.position, endPos, speed * s); trp.position = tr.position; if ((Vector2)tr.position == endPos) { isMake = true; isActive = false; rb.gravityScale = 1f; gameui.block.gameObject.SetActive(false); } } else if (isReverse == true) { tr.position = Vector2.MoveTowards(tr.position, startPos, speed * s); trp.position = tr.position; if (tr.position == (Vector3)startPos) { isActive = false; rb.gravityScale = 1f; } } } } }
рдЧреЗрдо рдбрд┐рдЬрд╛рдЗрдирдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдбрд╝рдмрдбрд╝ рдерд╛ред рдпрд╣ рдЧреЗрдо рдбрд┐рдЬрд╝рд╛рдЗрди рдерд╛ рдЬрд┐рд╕рдиреЗ рд╡рд┐рдХрд╛рд╕ рдЪрдХреНрд░ рдХреЛ 4 рд╕реЗ 6 рдорд╣реАрдиреЗ рддрдХ рдмрдврд╝рд╛рдпрд╛ рдерд╛ред рдХреБрд▓ рдореЗрдВ, рдЦреЗрд▓ рдореЗрдВ 34 рд╕реНрддрд░ рд╣реЛрддреЗ рд╣реИрдВ: 30 рдирд┐рдпрдорд┐рдд, 3 рдмреЙрд╕ рдФрд░ 1 рдЕрдВрддрд┐рдо (рд╕реНрддрд░)ред рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдзрд╛рд░рдг рдореИрдВрдиреЗ 2-3 рджрд┐рди рдХрд┐рдпрд╛, рдкреНрд░рддреНрдпреЗрдХ рдмреЙрд╕ рдиреЗ 2 рд╕рдкреНрддрд╛рд╣ рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрддрд░ рдиреЗ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХрд┐рдпрд╛ред рдпрд╣ рд╕рдм рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдмрдирд╛рдпрд╛: 10 рд╕реНрддрд░ => 1 рдмреЙрд╕ => 10 рд╕реНрддрд░ => 2 рдмреЙрд╕ => 10 рд╕реНрддрд░ => 3 рдмреЙрд╕ => рдЕрдВрддрд┐рдо рд╕реНрддрд░редрд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдореЗрд░реА рд╢рд╛рди рд╣реИрдВред рд╡реЗ рдЕрд╕рд╛рдорд╛рдиреНрдп, рд╡рд┐рд╡рд┐рдз рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдереЛрдбрд╝рд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВред рдЦреБрд▓реА рджреБрдирд┐рдпрд╛ рдХреА рднрд╛рд╡рдирд╛ рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрддрд░реЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдирдХреНрд╢рд╛ рднреА рдмрдирд╛рдпрд╛:
рдирдХреНрд╢рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдбреНрд░рд╛рдЗрдВрдЧ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рд╕реНрддрд░реЛрдВ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рджреАред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпреЛрдЬрдирд╛рдПрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереАрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬреЛ рдЕрдВрдзреЗрд░рд╛ рд╣реЛ рдЧрдП рдереЗред рд╡реИрд╕реЗ, рдпрд╣ 1000x1000 рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирдХреНрд╢рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕ рдирдХреНрд╢реЗ рд╕реЗ рдерд╛ рдХрд┐ рдкреИрдорд╛рдиреЗ рдирд┐рдХрд▓рд╛: 1 рдмреНрд▓реЙрдХ = 1 рдкрд┐рдХреНрд╕реЗрд▓ = рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рдЖрдХрд╛рд░редрд╕реНрддрд░реЛрдВ рдХреЗ рдмреАрдЪ, рдЦрд┐рд▓рд╛рдбрд╝реА рд▓рд┐рдлреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рддрдХ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рджреБрдирд┐рдпрд╛ рдХреЗ рдЦреБрд▓реЗрдкрди рдХреА рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рдордЭ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдмрдирд╛рдирд╛, рд╕реНрддрд░реЛрдВ рдХреЗ рдмреАрдЪ рдпрд╛рддреНрд░рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдФрд░ рдпрд╣ рднреА, рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЯреНрд░рд┐рдЧрд░ рдЧреБрдкреНрдд рд▓рд┐рдлреНрдЯ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрдВ, рдЬреЛ 10-15 рд╕реНрддрд░реЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВредрд╕рд╛рдорд╛рдиреНрдп рд╕реНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд░реНрдорд╛рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдерд╛:- рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЖрдХрд╛рд░ рдФрд░ рдкреИрдорд╛рдиреЗ рд╣реЛрдВрдЧреЗ
- рдмрд╛рд╣рд░реА рджреАрд╡рд╛рд░реЗрдВ (рд╡рд┐рд╢реЗрд╖ рднреМрддрд┐рдХреА рдХреЗ рдХрд╛рд░рдг рдЯреНрд░рд┐рдкрд▓ рдореЛрдЯрд╛рдИ)
- рджреАрд╡рд╛рд░реЗрдВ рдЖрдВрддрд░рд┐рдХ рд╣реЛрддреА рд╣реИрдВ
- рдЦреБрдж рдХреЛ рд╕реНрддрд░ рджреЗрддрд╛ рд╣реИ
- рд▓рд┐рдлреНрдЯ, рдмрдЪрдд рдФрд░ рдСрдбрд┐рдпреЛ рдЯреНрд░рд┐рдЧрд░
рдпрд╣ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд▓рд┐рдХ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдФрд░ рд╕рдорд╛рди рдкреИрдЯрд░реНрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рдкрд╛рд╕ 100 рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:1 рдмреЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдХрдорд░реЗ рдореЗрдВ рдШреВрдорддрд╛ рд╣реИ, 5 рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рд╕рдЪ рдХрд╣реЗрдВ рддреЛ, рдпрд╣ рдПрдХ рдмреЙрд╕ рдХрд╛ рдПрдХ рдмреБрд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ: рд╕рд░рд▓, рдкрд┐рдЫрдбрд╝рд╛рдкрди рдФрд░ рдпрд╛рджрдЧрд╛рд░ рдирд╣реАрдВред рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЯрд╛рдИ рд╕реЗ рд╣реА рдЙрд╕рдХреА рд╣рддреНрдпрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди 4 рдЖрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд░рдХреНрд╖рд╛ рд╣реИ: рдЙрдирдореЗрдВ рд╕реЗ 3 рдЪрд╛рд▓рд╛рдХреА рд╕реЗ рдХрдорд░реЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЪрд▓рддреА рд╣реИрдВ рдФрд░ рдЬрдм рд╡рд╣ рдЪрд▓рддреА рд╣реИ рддреЛ рдмреЙрд╕ рдХреА рд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдореГрддреНрдпреБ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╡рд┐рд╕реНрдлреЛрдЯ рд╣реЛрддрд╛ рд╣реИредрд╕реНрдХреНрд░рд┐рдкреНрдЯ BossManagement 1 using UnityEngine; using System.Collections; public class BossManagement1 : GlobalFunctions { public float hp = 100f; public float speed = 0.2f; public bool startActivated = false; public bool activated = false; public bool activatedSaw = false; public bool activatedAngle = false; public bool activatedCoroutine = true; private bool active; private float maxhp; public Vector2 target; public Vector2 targetSaw1; public Vector2 targetSaw2; public Vector2 minBorder; public Vector2 maxBorder; public DeadBoss1 deadBoss; public GameObject backGround; public GameObject healthBar; public Transform tr; public Transform sawMain; public Transform saw1; public Transform saw2; public Arrow arrow; public AudioSet setStart; public AudioSet setEnd; public Transform player; public Power playerPower; private Transform bg, hb; private float targethp = 0f; private Vector2 startMove = new Vector2(-20f, 0f); public void Awake() { maxhp = hp; bg = backGround.transform; hb = healthBar.transform; } public void Start() { if (PlayerPrefs.GetString("boss1") == "death") { Dead(false); } } public void FixedUpdate() { if (startActivated && !activatedCoroutine) { if ((Vector2)tr.position != startMove) { tr.position = Vector2.MoveTowards(tr.position, startMove, speed); saw1.position = Vector2.MoveTowards(saw1.position, startMove, speed); saw2.position = Vector2.MoveTowards(saw2.position, startMove, speed); } else { activatedCoroutine = true; startActivated = false; StartCoroutine(ActivatedOn()); } } if (activated) { if ((Vector2)tr.position != target) { tr.position = Vector2.MoveTowards(tr.position, target, speed); } else { activated = false; sawMain.localScale = new Vector2(0f, 0f); StartCoroutine(TargetRotate()); } } if (activatedSaw) { if ((Vector2)saw1.position != targetSaw1) { saw1.position = Vector2.MoveTowards(saw1.position, targetSaw1, speed); } else { float x = Random.Range(minBorder.x, maxBorder.x); float y = Random.Range(minBorder.y, maxBorder.y); targetSaw1 = new Vector2(x, y); } if ((Vector2)saw2.position != targetSaw2) { saw2.position = Vector2.MoveTowards(saw2.position, targetSaw2, speed); } else { float x = Random.Range(minBorder.x, maxBorder.x); float y = Random.Range(minBorder.y, maxBorder.y); targetSaw2 = new Vector2(x, y); } } if (activatedAngle) { Vector2 dir = player.position - tr.position; float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; tr.localEulerAngles = new Vector3(0f, 0f, Mathf.LerpAngle(tr.localEulerAngles.z, angle, 0.1f)); } } public IEnumerator TargetRotate() { yield return new WaitForSeconds(3f + 3f * hp / maxhp); sawMain.localScale = new Vector2(6f, 6f); float x = Random.Range(minBorder.x, maxBorder.x); float y = Random.Range(minBorder.y, maxBorder.y); target = new Vector2(x, y); activated = true; } public IEnumerator ActivatedOn() { yield return new WaitForSeconds(3f); sawMain.localScale = new Vector2(6f, 6f); target = new Vector2(Random.Range(minBorder.x, maxBorder.x), Random.Range(minBorder.y, maxBorder.y)); targetSaw1 = new Vector2(Random.Range(minBorder.x, maxBorder.x), Random.Range(minBorder.y, maxBorder.y)); targetSaw2 = new Vector2(Random.Range(minBorder.x, maxBorder.x), Random.Range(minBorder.y, maxBorder.y)); activatedSaw = true; activated = true; arrow.isActive = true; } public IEnumerator ActivatedCoroutineOff() { yield return new WaitForSeconds(1f); activatedCoroutine = false; activatedAngle = true; } public void Update() { if (active == true) { if (hp != targethp) { float s = Time.fixedDeltaTime / 0.03f * (Time.deltaTime / 0.03f); hp = MoveToward(hp, targethp, speed * s, new Vector2(-0f, maxhp)); } else { active = false; if (targethp == 0f) { Dead(true); } } } UpdateHP(); } public void UpdateHP() { float h = hp / maxhp; bg.localScale = new Vector3(5f, 0.9f, 1f); hb.localScale = new Vector3(4.8f * h, 0.7f, 1f); hb.localPosition = new Vector3(-2.4f + 4.8f * h / 2f, 0f, 0f); } private bool oneTimeMusic = true; public void Damage(float damage) { if (oneTimeMusic == true) { oneTimeMusic = false; deadBoss.StartBoss(); deadBoss.Boom(); setStart.SetMusic(); startActivated = true; StartCoroutine(ActivatedCoroutineOff()); } if (hp != 0f) { targethp = Stable2(hp - damage, 0f, maxhp); speed = speed + damage * 0.02f; active = true; } } public void Dead(bool boom) { active = false; activated = false; activatedSaw = false; startActivated = false; activatedAngle = false; activatedCoroutine = false; backGround.SetActive(false); healthBar.SetActive(false); sawMain.gameObject.SetActive(false); saw1.gameObject.SetActive(false); saw2.gameObject.SetActive(false); setEnd.SetMusic(); arrow.obj.SetActive(false); PlayerPrefs.SetString("boss1", "death"); deadBoss.Dead(tr.position, boom); } public void OnCollisionEnter2D(Collision2D collision) { if (collision.transform.CompareTag("Player")) { Damage(playerPower.power); } } }
2 рдмреЙрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдЙрдирдХрд╛ рдкреИрдЯрд░реНрди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ: рд╡рд╣ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕реНрдерд╛рди рдФрд░ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рдж рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╣реИред рдмрд╛рдж рдмреЙрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдВрджреБ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреА рд░рдХреНрд╖рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рд╕рд╛рд░реНрдердХ рд╣реИ: рдорд╛рд▓рд┐рдХ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдореЗрдВ рдЪрд░рдг рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рдерд┐рдпрд╛рд░ рд╣реИрдВ:- рджреВрд░реА рдореЗрдВ 2 рдЖрд░реА
- 2 рдЖрд░реА рд╕реЗ рджреВрд░реА рдкрд░, рдЬрдм рдЖрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- 2 рд▓реЗрдЬрд░-рд╕реАрдорд┐рдд, рдЖрдВрджреЛрд▓рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рдЖрд░рд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд
- 2 рдкрд░рд╛рдмреИрдВрдЧрдиреАрдХрд┐рд░рдг, рдЬрдм рдПрдХ рдЖрд░рд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд
- 2 рдкрд░рд╛рдмреИрдВрдЧрдиреА, рдЬрдм рдПрдХ рдЖрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдЪрд▓рддреА рд╣реИ рдФрд░ 2 рдЖрд░реА рджреВрд░реА рдкрд░ рд╣реЛрддреА рд╣реИ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреНрд░рд╛рдлрд┐рдХ рднрд╛рдЧ рд╕реЗ, рджреВрд╕рд░рд╛ рдмреЙрд╕ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИ: рдХрдорд░реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рдмреЙрд╕ рд▓реЗрдЬрд╝рд░реЛрдВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреИрдореАрдиреНрд╕ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХрд╛ рд╕рдордпредрд╕реНрдХреНрд░рд┐рдкреНрдЯ BossManagement 2 using System.Collections; using UnityEngine; public class BossManagement2 : GlobalFunctions { public float hp = 100f; public float speed = 0.5f; public float speedRotate = 0.5f; public int stage = 1; public bool isAlive = true; public bool isActivated = false; public bool isMove = false; public bool isWorkingLaser = true; private float timeStamina = 0f; private float timeRetarget = 0f; public Vector2 region = Vector2.zero; public Vector3 target = Vector3.zero; public GameObject player; public Transform saw; public Transform laser1; public Transform laser2; public Laser laserL1; public Laser laserL2; public Transform laserOffset1; public Transform laserOffset2; public Explosion explosion; public GameObject explosionAsset; public CircleCollider2D trigStart; public BoxCollider2D laserDetected1; public BoxCollider2D laserDetected2; public GameObject saw1; public GameObject saw2; public Transform health; public Transform stamina; public SpriteRenderer srStamina; private Transform pl; private Transform tr; public Transform state; public Laser state1; public Laser state2; public Laser state3; public Laser state4; private Coroutine coroutineStamina; public SpriteRenderer bossBase; public SpriteRenderer laserD1; public SpriteRenderer laserD2; public Gate gateStart; public Gate gateEnd; public GameObject blockWin; public GameObject physicsIn; public GameObject stateLasers; public GameObject expStart; public AudioSet setStart; public AudioClip setEnd; public AudioBase audioBase; public void Awake() { bool isDeath = PlayerPrefs.GetString("boss2") == "death"; blockWin.SetActive(false); if (isDeath) { isAlive = false; gateStart.isReverse = true; gateEnd.isReverse = true; physicsIn.SetActive(false); stateLasers.SetActive(false); expStart.SetActive(false); gameObject.SetActive(false); } else { tr = transform; pl = player.transform; timeStamina = 5.4f / speedRotate / 100f; timeRetarget = 5.4f / speedRotate; saw.localScale = Vector3.zero; stamina.localScale = Vector3.zero; srStamina.color = new Color(0f, 0.5f, 1f, 0f); saw1.SetActive(false); saw2.SetActive(false); LaserDisable(); LaserBlockEnable(); } } public void Update() { if (isAlive) { if (isActivated == true) { switch (stage) { case 1: if (isMove == true) { if (tr.position == target) { isMove = false; RotatePlayer(); saw1.SetActive(true); saw2.SetActive(true); stamina.localScale = Vector3.zero; srStamina.color = new Color(0f, 0.5f, 1f, 1f); if (coroutineStamina != null) { StopCoroutine(coroutineStamina); } coroutineStamina = StartCoroutine(StaminaAnim(timeStamina, 100)); StartCoroutine(Retarget1()); } else { tr.position = Vector2.MoveTowards(tr.position, target, speed); } } break; case 2: if (isMove == true) { if (tr.position == target) { isMove = false; RotatePlayer(); saw.localScale = Vector3.zero; saw1.SetActive(true); saw2.SetActive(true); stamina.localScale = Vector3.zero; srStamina.color = new Color(0f, 0.5f, 1f, 1f); if (coroutineStamina != null) { StopCoroutine(coroutineStamina); } coroutineStamina = StartCoroutine(StaminaAnim(timeStamina, 100)); StartCoroutine(Retarget2()); } else { tr.position = Vector2.MoveTowards(tr.position, target, speed); } } break; case 3: if (isMove == true) { if (tr.position == target) { isMove = false; RotatePlayer(); saw.localScale = Vector3.zero; LaserEnable(); stamina.localScale = Vector3.zero; srStamina.color = new Color(0f, 0.5f, 1f, 1f); if (coroutineStamina != null) { StopCoroutine(coroutineStamina); } coroutineStamina = StartCoroutine(StaminaAnim(timeStamina, 100)); StartCoroutine(Retarget3()); } else { tr.position = Vector2.MoveTowards(tr.position, target, speed); } } break; case 4: if (isMove == true) { if (tr.position == target) { isMove = false; RotatePlayer(); saw.localScale = Vector3.zero; LaserEnable(); stamina.localScale = Vector3.zero; srStamina.color = new Color(0f, 0.5f, 1f, 1f); if (coroutineStamina != null) { StopCoroutine(coroutineStamina); } coroutineStamina = StartCoroutine(StaminaAnim(timeStamina, 100)); StartCoroutine(Retarget4()); } else { tr.position = Vector2.MoveTowards(tr.position, target, speed); } } break; case 5: if (isMove == true) { if (tr.position == target) { isMove = false; RotatePlayer(); saw.localScale = Vector3.zero; LaserEnable(); saw1.SetActive(false); saw2.SetActive(false); stamina.localScale = Vector3.zero; srStamina.color = new Color(0f, 0.5f, 1f, 1f); if (coroutineStamina != null) { StopCoroutine(coroutineStamina); } coroutineStamina = StartCoroutine(StaminaAnim(timeStamina, 100)); StartCoroutine(Retarget5()); } else { tr.position = Vector2.MoveTowards(tr.position, target, speed); } } break; } } else { if (trigStart.enabled == false) { isActivated = true; float musicValue = PlayerPrefs.GetFloat("music"); audioBase.UpSound(0.01f, 5, 0, TypePlaying.Music); explosion.health = 0f; explosion.StartCoroutineTimerOffsetExplosion(); RegionDetected(); LaserDisable(); target = Target(); } } } } public void FixedUpdate() { if (!isMove && isActivated) { laserOffset1.localEulerAngles = new Vector3(0f, 0f, laserOffset1.localEulerAngles.z + speedRotate); laserOffset2.localEulerAngles = new Vector3(0f, 0f, laserOffset2.localEulerAngles.z + speedRotate); if (isWorkingLaser) { state.localEulerAngles = new Vector3(0f, 0f, state.localEulerAngles.z + speedRotate); } } } public void RotatePlayer() { Vector2 p = pl.position; float angle = Mathf.Atan2(py, px) * Mathf.Rad2Deg; laserOffset1.localEulerAngles = new Vector3(0f, 0f, angle); laserOffset2.localEulerAngles = new Vector3(0f, 0f, angle - 180f); } private Vector3[] posLasers = new Vector3[] { Vector3.zero, Vector3.zero}; public void TriggerLaserDefect(int id) { switch (id) { case 1: state1.active = false; state1.lr1.SetPositions(posLasers); break; case 2: state2.active = false; state2.lr1.SetPositions(posLasers); break; case 3: state3.active = false; state3.lr1.SetPositions(posLasers); break; case 4: state4.active = false; state4.lr1.SetPositions(posLasers); break; } if (!state1.active && !state2.active && !state3.active && !state4.active) { isWorkingLaser = false; state1.active = false; state2.active = false; state3.active = false; state4.active = false; laserL1.active = false; laserL2.active = false; laser1.localPosition = Vector2.zero; laser2.localPosition = Vector2.zero; } } public void OnCollisionEnter2D(Collision2D collision) { if (collision.transform.tag == "Player") { hp = hp - pl.GetComponent<Power>().power; health.localScale = new Vector2(hp / 50f, hp / 50f); stage = 5 - (int)(hp / 25f); if (stage == 4) { LaserBlockDisable(); } if (hp <= 0f && isAlive == true) { audioBase.LowerSound(0.1f, 50, 0, TypePlaying.Music); audioBase.SetSound(setEnd, 0, 0.8f, TypePlaying.Music, true, 1f); GameObject deadInside = Instantiate(explosionAsset, pl.position, Quaternion.identity); deadInside.GetComponent<Rigidbody2D>().isKinematic = true; deadInside.transform.localScale = new Vector2(2f, 2f); Explosion exp = deadInside.GetComponent<Explosion>(); exp.radius = 2f; exp.health = 0f; exp.timeOffsetExplosion = 3f; exp.StartCoroutineTimerOffsetExplosion(); gateStart.OnTriggerEnter2D(player.GetComponent<Collider2D>()); gateEnd.OnTriggerEnter2D(player.GetComponent<Collider2D>()); PlayerPrefs.SetString("boss2", "death"); blockWin.SetActive(false); gameObject.SetActive(false); } } } public void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { blockWin.SetActive(true); trigStart.enabled = false; } } public void LaserEnable() { if (isWorkingLaser) { laserL1.active = true; laserL2.active = true; state1.active = false; state2.active = false; state3.active = false; state4.active = false; } laser1.localPosition = new Vector2(0f, -1f); laser2.localPosition = new Vector2(0f, -1f); return; } public void LaserDisable() { if (isWorkingLaser) { state1.active = true; state2.active = true; state3.active = true; state4.active = true; laserL1.active = false; laserL2.active = false; } laser1.localPosition = Vector2.zero; laser2.localPosition = Vector2.zero; return; } public void LaserBlockEnable() { laserDetected1.enabled = true; laserDetected2.enabled = true; } public void LaserBlockDisable() { laserDetected1.enabled = false; laserDetected2.enabled = false; } public void RegionDetected() { Vector2 result = Vector2.zero; Vector2 pos = pl.position; if (pos.x > -45f & pos.x <= -30f) { result.x = 1; } else if (pos.x > -30f & pos.x < -5f) { result.x = 2; } else if (pos.x >= -5f & pos.x <= 5f) { result.x = 3; } else if (pos.x > 5f & pos.x <= 30f) { result.x = 4; } else if (pos.x >= 30f & pos.x < 45f) { result.x = 5; } if (pos.y > -45f & pos.y <= -30f) { result.y = 1; } else if (pos.y > -30f & pos.y < -5f) { result.y = 2; } else if (pos.y >= -5f & pos.y <= 5f) { result.y = 3; } else if (pos.y > 5f & pos.y <= 30f) { result.y = 4; } else if (pos.y >= 30f & pos.y < 45f) { result.y = 5; } region = result; return; } private readonly Vector2[] aroundCloser = new Vector2[] { new Vector2(2, 2), new Vector2(2, 3), new Vector2(2, 4), new Vector2(3, 2), new Vector2(3, 4), new Vector2(4, 2), new Vector2(4, 3), new Vector2(4, 4) }; public Vector2 Target() { Vector2 result = Vector2.zero; if (region == new Vector2(3, 3)) { region = aroundCloser[Random.Range(0, 8)]; } switch (region.x) { case 1: result.x = Random.Range(-45f, -32f); break; case 2: result.x = Random.Range(-29f, -5f); break; case 3: result.x = Random.Range(-5f, 5f); break; case 4: result.x = Random.Range(5f, 29f); break; case 5: result.x = Random.Range(32f, 45f); break; } switch (region.y) { case 1: result.y = Random.Range(-45f, -32f); break; case 2: result.y = Random.Range(-29f, -5f); break; case 3: result.y = Random.Range(-5f, 5f); break; case 4: result.y = Random.Range(5f, 29f); break; case 5: result.y = Random.Range(32f, 45f); break; } isMove = true; return result; } public IEnumerator StaminaAnim(float time, int count) { yield return new WaitForSeconds(time); float sc = hp * (100f - count) / 5000f; stamina.localScale = new Vector2(sc, sc); if (count > 1) { count = count - 1; coroutineStamina = StartCoroutine(StaminaAnim(time, count)); } } public IEnumerator Retarget1() { yield return new WaitForSeconds(timeRetarget); srStamina.color = new Color(0f, 0.5f, 1f, 0f); RotatePlayer(); saw1.SetActive(false); saw2.SetActive(false); RegionDetected(); target = Target(); } public IEnumerator Retarget2() { yield return new WaitForSeconds(timeRetarget); srStamina.color = new Color(0f, 0.5f, 1f, 0f); RotatePlayer(); saw.localScale = new Vector2(2f, 2f); saw1.SetActive(false); saw2.SetActive(false); RegionDetected(); target = Target(); } public IEnumerator Retarget3() { yield return new WaitForSeconds(timeRetarget); srStamina.color = new Color(0f, 0.5f, 1f, 0f); RotatePlayer(); saw.localScale = new Vector2(2f, 2f); LaserDisable(); RegionDetected(); target = Target(); } public IEnumerator Retarget4() { yield return new WaitForSeconds(timeRetarget); srStamina.color = new Color(0f, 0.5f, 1f, 0f); RotatePlayer(); saw.localScale = new Vector2(2f, 2f); LaserDisable(); RegionDetected(); target = Target(); } public IEnumerator Retarget5() { yield return new WaitForSeconds(timeRetarget); srStamina.color = new Color(0f, 0.5f, 1f, 0f); RotatePlayer(); saw.localScale = new Vector2(2f, 2f); saw1.SetActive(true); saw2.SetActive(true); LaserDisable(); RegionDetected(); target = Target(); } }
рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рдмреАрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ 3 рдмреЙрд╕! рд╡рд╣ рдШреВрдордиреЗ рдлрд┐рд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдХрд╛рд╕реНрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдХрд┐рд╕реА рднреА рдХреЛрдг рдкрд░ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдШреВрдорддрд╛ рд╣реИ, рдлрд┐рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП 12 рдХрд┐рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ, рдпрд╣ рд╕рдмрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд░рдг рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдЙрдбрд╝рд╛рди рднрд░рддрд╛ рд╣реИред рд╕реНрддрд░ рдкрд░ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдирд╖реНрдЯ рд╣реЛ рд░рд╣реА рд╣реИрдВред рдФрд░ рдмреЙрд╕ рд░реЗрдХрд╛рд╕реНрдЯ рдХреИрд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ? рдЯреНрд░рд┐рдЧрд░ рдХреЛ рд╕реНрдерд┐рд░ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╕реНрд╡рдпрдВ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ 2 рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реИ, рддрд╛рдХрд┐ рд░реЗрдХрд╛рд╕реНрдЯ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдерд╛ рдЬрд╣рд╛рдВ рдмреЙрд╕ рд╣рд╡рд╛ рдореЗрдВ рдирд╣реАрдВ рдЙрдбрд╝ рдЬрд╛рдПрдЧрд╛, рджреАрд╡рд╛рд░ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рджреАрд╡рд╛рд░ рдХреЗ рд▓рд┐рдП riveted рд╣реЛрдЧрд╛ред рдмреЙрд╕ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░рдХреНрд╖рд╛ рд╣реЛрддреА рд╣реИ: рдмреЙрд╕ рдХреЗ рд╕рд╛рде рд╕реНрддрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ (рдкреНрд░рддреНрдпреЗрдХ рдмреЙрд╕ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рдкрд╣реЗрд▓реА рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЕрд▓рдЧ рдмрдбрд╝реЗ рд╕реНрддрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ) рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдХреНрд░рд┐рдп рд╣реЛредрдмреЙрд╕ рдореЗрдВ 5 рдЬрд╛рд▓ рдЦрд╛рд▓реА рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░рд┐рдЧрд░ рдХреЗрд╡рд▓ 3-4 рдЬрд╛рд▓ рд╕рдХреНрд░рд┐рдп рд╣реИред рдФрд░ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдПрдХ рдмреЗрд╣рддрд░ рдкреНрд░рдгрд╛рд▓реА рднреА рдереА, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреНрд╖реЗрддреНрд░ рд╢рд╛рдорд┐рд▓ рдереЗ (рдЬрд┐рд╕рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рд▓ рдХреЗ рд▓рд┐рдПред рдФрд░ рдЙрдбрд╝рд╛рди рдХреЗ рджреМрд░рд╛рди, рдмреЙрд╕ рд╣рдореЗрд╢рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдорд╛рд░рддрд╛ рд╣реИредрдЯреНрд░реИрдк рд╕реВрдЪреА:- рдХреЗрдВрджреНрд░ рдореЗрдВ рд▓реЗрдЬрд░, рдЬреЛ рд╣рд░ рдмрд╛рд░ рдмреЙрд╕ рдХреЗ рдЙрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
- 2 рдкрд░рд╛рдмреИрдВрдЧрдиреАрдХрд┐рд░рдг рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░реЛрдВ (рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ (рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕рд╛рдордиреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ)ред
- рдПрдХ рдРрд╕рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдЬреЛ рд╣рдореЗрд╢рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред
- 2 рдЖрд░реА, рдЬреЛ рд╣рдореЗрд╢рд╛ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реИред
- 4 рдЯреНрд░реИрдк рдЧреЗрдВрджреЛрдВ рдХреЛ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╕рдордорд┐рдд рд░реВрдк рд╕реЗ рд▓реЗ рдЬрд╛рдирд╛
рд╕реНрдХреНрд░рд┐рдкреНрдЯ BossManagement 3 using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; public class BossManagement3 : MonoBehaviour { public float health = 100f; public Vector4[] boxs = new Vector4[0]; public int[] saw1Fields = new int[0]; public int[] saw2Fields = new int[0]; public int[] saw3Fields = new int[0]; public int[] laser1Fields = new int[0]; public int[] laser2Fields = new int[0]; public Transform trBoss; public SpriteRenderer srBoss; public BossTracing3 bt; public Transform saw1; public Transform saw2; public Transform saw3; public Transform laser; public Transform laser1; public Transform laser2; public Transform trap1; public Transform trap2; public Transform trap3; public Transform trap4; public LineRenderer lr1; public LineRenderer lr2; public TrailRenderer trail; public GameObject exp; public GameObject terminal1; public GameObject terminal2; public GameObject LaserTarget; public GameObject LaserMover; public GameObject TrapsMover; public GameObject SawMover; public GameObject SawsAroundMover; public Explosion explosion; public SpriteRenderer sr; public CircleCollider2D cc; public Animator animatorEnd; public bool isMove = false; public bool isMoveSaw1 = false; public bool isMoveSaw2 = false; public bool isMoveSaw3 = false; public bool isMoveLaser1 = false; public bool isMoveLaser2 = false; public bool isMoveTraps = false; public int loadScene = 35; public int fieldPlayer = 0; private bool isActive = true; private float maxHealth; private Vector2 target = Vector2.zero; private Vector2 saw1target = Vector2.zero; private Vector2 saw2target = Vector2.zero; private Vector2 saw3target = Vector2.zero; private Vector2 laser1target = Vector2.zero; private Vector2 laser2target = Vector2.zero; private Vector2 traptarget1 = Vector2.zero; private Vector2 traptarget2 = Vector2.zero; private Vector2 traptarget3 = Vector2.zero; private Vector2 traptarget4 = Vector2.zero; private Vector2 border = new Vector2(47f, 44.5f); private Vector2 borderSaw = new Vector2(46f, 43.5f); private Management m; public GameObject p { get; private set; } private HealthBar hb; private Transform tr; private Power ppl; private int lengthBoxs = 0; private bool isLife = true; public void Awake() { isActive = !(PlayerPrefs.GetString("boss1") == "life" && PlayerPrefs.GetString("boss2") == "life"); terminal1.SetActive(!isActive); terminal2.SetActive(isActive); trail.enabled = PlayerPrefs.GetString("graphicsquality") != "low"; m = GameObject.FindWithTag("MainCamera").GetComponent<Management>(); lengthBoxs = boxs.Length; maxHealth = health; hb = m.healthBar; p = m.player; tr = p.transform; ppl = m.ppl; float c = health / maxHealth; srBoss.color = new Color(0f, 0f, c); } public void Start() { if (isActive == false) { return; } StartCoroutine(Mover()); fieldPlayer = bt.BoxPos(tr.position); if (fieldPlayer >= 0) { Vector4 r = boxs[saw1Fields[fieldPlayer]]; saw1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[saw2Fields[fieldPlayer]]; saw2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[saw3Fields[fieldPlayer]]; saw3target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[laser1Fields[fieldPlayer]]; laser1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[laser2Fields[fieldPlayer]]; laser2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } else { Vector4 r = boxs[Random.Range(0, lengthBoxs)]; saw1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[Random.Range(0, lengthBoxs)]; saw2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[Random.Range(0, lengthBoxs)]; saw3target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[Random.Range(0, lengthBoxs)]; laser1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[Random.Range(0, lengthBoxs)]; laser2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } TrapMover(); StartCoroutine(Laser1AIM()); StartCoroutine(Laser2AIM()); isMoveSaw1 = true; isMoveSaw2 = true; isMoveSaw3 = true; isMoveLaser1 = true; isMoveLaser2 = true; return; } public void SawMover1() { fieldPlayer = bt.BoxPos(tr.position); if (fieldPlayer >= 0) { Vector4 r = boxs[saw1Fields[fieldPlayer]]; saw1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } else { Vector4 r = boxs[Random.Range(0, lengthBoxs)]; saw1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } isMoveSaw1 = true; } public void SawMover2() { fieldPlayer = bt.BoxPos(tr.position); if (fieldPlayer >= 0) { Vector4 r = boxs[saw2Fields[fieldPlayer]]; saw2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } else { Vector4 r = boxs[Random.Range(0, lengthBoxs)]; saw2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } isMoveSaw2 = true; } public void SawMover3() { fieldPlayer = bt.BoxPos(tr.position); if (fieldPlayer >= 0) { Vector4 r = boxs[saw3Fields[fieldPlayer]]; saw3target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } else { Vector4 r = boxs[Random.Range(0, lengthBoxs)]; saw3target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } isMoveSaw3 = true; } public void LaserMover1() { fieldPlayer = bt.BoxPos(tr.position); if (fieldPlayer >= 0) { Vector4 r = boxs[laser1Fields[fieldPlayer]]; laser1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } else { Vector4 r = boxs[Random.Range(0, lengthBoxs)]; laser1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } StartCoroutine(Laser1AIM()); isMoveLaser1 = true; } public void LaserMover2() { fieldPlayer = bt.BoxPos(tr.position); if (fieldPlayer >= 0) { Vector4 r = boxs[laser2Fields[fieldPlayer]]; laser2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } else { Vector4 r = boxs[Random.Range(0, lengthBoxs)]; laser2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); } StartCoroutine(Laser2AIM()); isMoveLaser2 = true; } public void TrapMover() { traptarget1 = new Vector2(Random.Range(-border.x, border.x), Random.Range(-border.y, border.y)); traptarget2 = new Vector2(-traptarget1.x, -traptarget1.y); traptarget3 = new Vector2(-traptarget1.x, traptarget1.y); traptarget4 = new Vector2(traptarget1.x, -traptarget1.y); isMoveTraps = true; } public IEnumerator Laser1AIM() { yield return new WaitForSeconds(0.5f); Vector2 diff = tr.position; float rot_z = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg + 90f; laser1.rotation = Quaternion.Euler(0f, 0f, rot_z); } public IEnumerator Laser2AIM() { yield return new WaitForSeconds(0.5f); Vector2 diff = tr.position; float rot_z = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg + 90f; laser2.rotation = Quaternion.Euler(0f, 0f, rot_z); } public IEnumerator Mover() { yield return new WaitForSeconds(7.5f); if (isLife) { Vector2 diff = tr.position; float rot_z = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg + 90f; laser.rotation = Quaternion.Euler(0f, 0f, rot_z); target = bt.GetPosRaycast(); isMove = true; } } public void Update() { if (isActive == false) { return; } float s = Time.fixedDeltaTime / (0.03f / Time.timeScale); if (isMove) { trBoss.position = Vector2.MoveTowards(trBoss.position, target, s * 0.5f); if (trBoss.position == (Vector3)target) { isMove = false; if (isLife) { StartCoroutine(Mover()); } } } if (isMoveSaw1) { saw1.position = Vector2.MoveTowards(saw1.position, saw1target, s * 0.1f); if (saw1.position == (Vector3)saw1target) { isMoveSaw1 = false; if (isLife) { SawMover1(); } } } if (isMoveSaw2) { saw2.position = Vector2.MoveTowards(saw2.position, saw2target, s * 0.1f); if (saw2.position == (Vector3)saw2target) { isMoveSaw2 = false; if (isLife) { SawMover2(); } } } if (isMoveSaw3) { saw3.position = Vector2.MoveTowards(saw3.position, saw3target, s * 0.1f); if (saw3.position == (Vector3)saw3target) { isMoveSaw3 = false; if (isLife) { SawMover3(); } } } if (isMoveLaser1) { laser1.position = Vector2.Lerp(laser1.position, laser1target, s * 0.1f); if (laser1.position == (Vector3)laser1target) { isMoveLaser1 = false; if (isLife) { LaserMover1(); } } } if (isMoveLaser2) { laser2.position = Vector2.Lerp(laser2.position, laser2target, s * 0.1f); if (laser2.position == (Vector3)laser2target) { isMoveLaser2 = false; if (isLife) { LaserMover2(); } } } if (isMoveTraps) { trap1.position = Vector2.MoveTowards(trap1.position, traptarget1, s * 0.1f); trap2.position = Vector2.MoveTowards(trap2.position, traptarget2, s * 0.1f); trap3.position = Vector2.MoveTowards(trap3.position, traptarget3, s * 0.1f); trap4.position = Vector2.MoveTowards(trap4.position, traptarget4, s * 0.1f); lr1.SetPosition(0, trap1.position); lr1.SetPosition(1, trap2.position); lr2.SetPosition(0, trap3.position); lr2.SetPosition(1, trap4.position); if (trap1.position == (Vector3)traptarget1) { isMoveTraps = false; if (isLife) { TrapMover(); } } } } public void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject == p) { if (isActive == false) { isActive = true; Start(); } if (isMove == true) { hb.StraightDamage(10f, "Boss3"); } else { health = health - ppl.power; float c = health / maxHealth; srBoss.color = new Color(0f, 0f, c); trail.startColor = srBoss.color; if (health <= 0f) { isLife = false; isMove = false; saw1target = trBoss.position; saw2target = trBoss.position; saw3target = trBoss.position; isMoveSaw1 = true; isMoveSaw2 = true; isMoveSaw3 = true; sr.enabled = false; cc.enabled = false; exp.SetActive(true); explosion.health = 0f; explosion.StartCoroutineTimerOffsetExplosion(); Vector2 diff = trBoss.position; float rot_z = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg + 90f; laser.rotation = Quaternion.Euler(0f, 0f, rot_z); int fieldBoss = bt.BoxPos(trBoss.position); Vector4 r = boxs[laser1Fields[fieldBoss]]; laser1target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); r = boxs[laser2Fields[fieldBoss]]; laser2target = new Vector2(Random.Range(rz, rx), Random.Range(rw, ry)); StartCoroutine(Ended()); } } } } public void EndedCoroutine() { if (!isActive) { //Debug.Log("End"); isActive = true; StartCoroutine(Ended()); } } public IEnumerator Ended() { yield return new WaitForSeconds(6.5f); if (hb.healthBarImage.fillAmount != 0f) { animatorEnd.SetBool("isActive", true); StartCoroutine(EndedFunction()); } } public IEnumerator EndedFunction() { yield return new WaitForSeconds(1.5f); if (hb.healthBarImage.fillAmount != 0f) { PlayerPrefs.SetInt("progress", 35); SceneManager.LoadSceneAsync(loadScene); } } public void ControlDamagers(bool lt, bool lm, bool tm, bool sm, bool sam) { LaserTarget.SetActive(lt); LaserMover.SetActive(lm); TrapsMover.SetActive(tm); SawMover.SetActive(sm); SawsAroundMover.SetActive(sam); } }
рдСрдбрд┐рдпреЛ рдФрд░ рд╕рдВрдЧреАрддрдореИрдВ рд╕рдВрдЧреАрдд рднреА рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рд╕рд╣реА рд╕рдВрдЧреАрдд рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЧреАрдд рдХрд╛ рд╕реНрд╡рд╛рдж рд╣реИред рдореЗрд░реА рдпреЛрдЬрдирд╛ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░реИрдХ рдЪреБрдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдпреЛрдЬрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛: рдореИрдВрдиреЗ 25 рдЯреНрд░реИрдХ рдЙрдард╛рдПред рдореИрдВрдиреЗ рдПрд╕реЗрдЯ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕рднреА рдЯреНрд░реИрдХ рдЦреЛрдЬреЗред рдореИрдВрдиреЗ freesound.org рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╛рдЬрд╝реЗрдВ рд▓реАрдВредрддрдХрдиреАрдХреА рднрд╛рдЧ рд╕реЗ рдзреНрд╡рдирд┐ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рдХреИрдорд░реЗ рдкрд░ рдзреНрд╡рдирд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 5 рдЕрдХреНрд╖рдо рдСрдбрд┐рдпреЛ рд╕реНрд░реЛрдд рдФрд░ рдПрдХ рдСрдбрд┐рдпреЛрдмреЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереАред рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╡реЙрд▓реНрдпреВрдо, рд▓реВрдк, рдЯрд╛рдЗрдк (рд╕рдВрдЧреАрдд рдпрд╛ рдзреНрд╡рдирд┐) рдФрд░ рд╕реНрд╡рдпрдВ рдСрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕реЗрдЯрд╕рд╛рдЙрдВрдб рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдерд╛ред рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдмрд╛рдж, рдзреНрд╡рдирд┐ рдмрдЬрдиреЗ рд▓рдЧреА рдФрд░ (рдпрджрд┐ рд▓реВрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛) IEnumerator рдЯреНрд░реИрдХ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд░рд╛рдмрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдЪрд╛рд▓реВ рд╣реЛ рдЧрдпрд╛ рдФрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдШрдЯрдХ рдмрдВрдж рд╣реЛ рдЧрдпрд╛редрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдбрд┐рдпреЛрдмреЗрд╕ using UnityEngine; using System.Collections; public class AudioBase : GlobalFunctions { public AudioSource[] layerSounds = new AudioSource[0]; public GameObject music; private float musicValue, soundValue; private int lengthLayerSounds = 0; private bool soundActive = true; private Coroutine offsetActive; private int lowerSoundCoroutineCounter = 100; private int upSoundCoroutineCounter = 0; public void Awake() { soundActive = PlayerPrefs.GetString("graphicsquality") != "low"; musicValue = PlayerPrefs.GetFloat("music"); soundValue = PlayerPrefs.GetFloat("sound"); lengthLayerSounds = layerSounds.Length; for (int i = 0; i < lengthLayerSounds; i++) { layerSounds[i].enabled = false; } } public void LowerSound(float timer, int upd, int id, TypePlaying typePlaying) { lowerSoundCoroutineCounter = upd; if (typePlaying == TypePlaying.Music) { StartCoroutine(LowerSoundCoroutine(timer, upd, id, musicValue)); } else { StartCoroutine(LowerSoundCoroutine(timer, upd, id, soundValue)); } } public void UpSound(float timer, int upd, int id, TypePlaying typePlaying) { upSoundCoroutineCounter = 0; if (typePlaying == TypePlaying.Music) { StartCoroutine(UpSoundCoroutine(timer, upd, id, musicValue)); } else { StartCoroutine(UpSoundCoroutine(timer, upd, id, soundValue)); } } public IEnumerator LowerSoundCoroutine(float timer, int upd, int id, float volumeSen) { yield return new WaitForSeconds(timer); layerSounds[id].volume = Stable2((layerSounds[id].volume / volumeSen - timer) * volumeSen, 0f, 1f); if (lowerSoundCoroutineCounter > 1) { StartCoroutine(LowerSoundCoroutine(timer, upd, id, volumeSen)); lowerSoundCoroutineCounter -= 1; } } public IEnumerator UpSoundCoroutine(float timer, int upd, int id, float volumeSen) { yield return new WaitForSeconds(timer); layerSounds[id].volume = Stable2((layerSounds[id].volume / volumeSen + timer) * volumeSen, 0f, 1f); if (upSoundCoroutineCounter < upd) { StartCoroutine(UpSoundCoroutine(timer, upd, id, volumeSen)); upSoundCoroutineCounter += 1; } } public void UpdateSound() { if (soundActive) { float time = Time.timeScale; for (int i = 0; i < lengthLayerSounds; i++) { AudioSource audioSource = layerSounds[i]; if (audioSource.enabled == true) { audioSource.pitch = time; } } } } public void SetSound(AudioClip audioClip, int layerSound, float volume, TypePlaying typePlaying, bool loop, float time) { StartCoroutine(SetSoundTime(audioClip, layerSound, volume, typePlaying, loop, time)); } public IEnumerator SetSoundTime(AudioClip audioClip, int layerSound, float volume, TypePlaying typePlaying, bool loop, float time) { yield return new WaitForSeconds(time); SetSound(audioClip, layerSound, volume, typePlaying, loop); } public void SetSound(AudioClip audioClip, int layerSound, float volume, TypePlaying typePlaying, bool loop) { if (volume == 0f) { return; } if (soundActive) { AudioSource audioSource = layerSounds[layerSound]; audioSource.enabled = true; audioSource.clip = audioClip; audioSource.loop = loop; if (typePlaying == TypePlaying.Sound) { audioSource.volume = soundValue * volume; } else { audioSource.volume = musicValue * volume; } audioSource.Play(); if (offsetActive != null) { StopCoroutine(offsetActive); offsetActive = null; } if (!loop) { offsetActive = StartCoroutine(Offet(layerSound, audioClip.length, audioSource)); } } } public IEnumerator Offet(int layerSound, float length, AudioSource audioSource) { yield return new WaitForSeconds(length); if (audioSource.clip == layerSounds[layerSound].clip) { AudioSource audioSource2 = layerSounds[layerSound]; audioSource2.Stop(); audioSource2.enabled = false; } } }
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Tramp рдШрдЯрдХ (рдореБрджреНрд░рд╛рдВрдХрди) рдХреА рдЕрдкрдиреА рдзреНрд╡рдирд┐ рдкреНрд░рдгрд╛рд▓реА рд╣реЛрддреА рд╣реИ: рдЬрдм рдХреЛрдИ рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реНрдЯреИрдореНрдкрд┐рдВрдЧ рдХреЗ рдореЛрд╣рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдзреНрд╡рдирд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдШрдЯрдХ рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдЙрддреНрдкрд╛рдж, рд╡рд╣ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓рд┐рдП рджреВрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрд╡рд╢реНрдпрдХ рдорд╛рддреНрд░рд╛ рджреЗрддрд╛ рд╣реИ, рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдзреНрд╡рдирд┐ рдкреНрд░рднрд╛рд╡ рдмрдирд╛рдиреЗ рдХреА рддрд░рд╣ред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рд╢рд╛рдпрдж рдпрд╣ рдЧрд▓рдд рдХреЛрдб рдореЗрдВ рд╣реИредрднреВрдЦрдВрдбрд╣рд╛рдБ, рдЗрд╕ рдЦреЗрд▓ рдХреА рдХрд╣рд╛рдиреА рд╣реИред рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ 2 рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ: рд╡рд╣ рд▓рдЧрднрдЧ рдЧреИрд░-рдореМрдЦрд┐рдХ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЦреЗрд▓ рдХреЗ рдЕрдВрдд рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдкреВрд░реА рд╕рд╛рдЬрд┐рд╢ рд╣реИ)редрдЦреЗрд▓ рдореЗрдВ 3 рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ: рдкрд╣рд▓реЗ рджреЛ рдорд╛рд▓рд┐рдХреЛрдВ рдкрд░ рдФрд░ 32 рдХреЗ рд╕реНрддрд░ рдкрд░ред рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдЪреБрдирд╛рд╡ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдЙрдиреНрд╣реЗрдВ рдорд╛рд░ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдПрдХ рд╣рдорд▓реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдпрд╛ рдХреНрд░рдорд╢рдГ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗред рдФрд░ 32 рдХреЗ рд╕реНрддрд░ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓: рдЖрдк рдЯреНрд░рд┐рдЧрд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рд╕реНрдерд╛рдиреАрдп рдХрд╣рд╛рдиреА рдмрдЪрдд рд▓рдВрдЧрд░ (рдПрдЖрдИ рдирд╛рдордХ рдПрдХ рдЪрд░рд┐рддреНрд░) рдХреЗ рдЬрд╛рдЧрд░рдгред рдкрд╣рд▓реЗ рджреЛ рдорд╛рд▓рд┐рдХреЛрдВ рдХреА рдкрд╕рдВрдж рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ 3 рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдбрд╝рд╛рдИ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рджреЛ рдорд╛рд▓рд┐рдХреЛрдВ рдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХреЛ рдорд╛рд░рддреЗ рд╣реИрдВ, рддреЛ рддреАрд╕рд░реЗ рдорд╛рд▓рд┐рдХ рдХреЗ рд╕рд╛рде рд▓рдбрд╝рд╛рдИ рд╣реЛрдЧреАред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдирд╣реАрдВредрдХреЗрд╡рд▓ 4 рдЕрдВрдд рд╣реИрдВ: рдЕрдЪреНрдЫрд╛, рдмреБрд░рд╛, рддрдЯрд╕реНрде рдФрд░ рдЧреБрдкреНрддред рд╡реЗ 2 рд╡рд┐рдХрд▓реНрдкреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ: рдПрдЖрдИ рд╕рдХреНрд░рд┐рдпрдг рдФрд░ 3 рдорд╛рд▓рд┐рдХреЛрдВ рдХреЛ рдорд╛рд░рдирд╛ред рдореИрдВ рдХреНрд░рдо рдореЗрдВ рдЕрдВрдд рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛:рдЕрдЪреНрдЫрд╛ рдЕрдВрддрдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ 3 рдмреЙрд╕ рдХреЛ рдирд╣реАрдВ рдорд╛рд░рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдЖрдИ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ рдПрдХ рдПрдЖрдИ рдореЛрдиреЛрд▓реЙрдЧ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдкрд░ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЬрд▓рддреА рд╣реБрдИ рдЖрдВрдЦ рджрд┐рдЦрд╛рдИ рдЬрд╛рддреА рд╣реИ (рдЖрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЦреЗрд▓ рдкреНрд░рднрд╛рд╡реЛрдВ рд╕реЗ)редрдкрд╛рда рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж
рддреБрдо рдореБрдЭреЗ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ
рдФрд░ рдЬрд╛рдЧреГрдд рд░реЗрдВрдЬрд░ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╛рдордпрд╛рдм
рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдлрд▓ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ рдХреА
рдЖрдк рдереЛрдбрд╝рд╛ рдЖрд░рд╛рдо рд▓рд╛рдпрдХ
рддреБрдо рдЬреАрдд
рджреЗрдЦреЗрдВ
рддрдЯрд╕реНрде рдЕрдВрдд рдЧреБрдкреНрдд рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрдерд╛рдирдХ рд▓рдЧрднрдЧ рдЕрд╢рд╛рдмреНрджрд┐рдХ рдХреНрдпреЛрдВ рд╣реИ? рдореИрдВ рдЕрдВрдд рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреИрд░-рдореМрдЦрд┐рдХ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдЦреЗрд▓ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдкрд╛рда рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ "рдЦреЗрд▓ рдХреЗ рдИрдПрдирдЯреА рдХреЗ рд▓рд┐рдП" рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЛрдЯ рдХреЗ рд╕рд╛рде рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЛ рдЦреЗрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рдЦреЗрд▓ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд╣реБрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИредрдкрд░рд┐рджреГрд╢реНрдп рдЗрд╕рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░рд┐рджреГрд╢реНрдп рджреБрдирд┐рдпрд╛ рдХрд╛ рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕ рд╣реИ, рдЗрд╕ рдЦреЗрд▓ рдХреЗ рдЪреЗрд╣рд░реЗ рдФрд░ рдкрд╛рддреНрд░реЛрдВ рд╕реЗ рдиреЛрдЯреНрд╕, рд▓реЙрдЧ, рд░рд┐рдкреЛрд░реНрдЯ, рдореЛрдиреЛрд▓реЙрдЧ рдФрд░ рд╕рдВрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ: рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рда рдореЗрдВред рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдРрд╕рд╛ рдЧреНрд░рд╛рдлреЛрдореИрдирд┐рдЕрдХ рдкреНрд░рд▓рд╛рдк рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЧреНрд▓реВрдХреЛрд╡реНрд╕реНрдХреА рдХреЛ рднреА рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ (рдореБрдЭреЗ рдЙрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдореЗрдЯреНрд░реЛ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ)ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдПрдирдкреАрд╕реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рдЙрдирдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдореЗрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдорд┐рд▓реЗ:
рдлрд┐рд░ рд╕реЗ, рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЦрд┐рд░реА рдмрд╛рд░ рд▓рд┐рдЦреА рдЧрдИ рдереА, рдФрд░ рдЙрд╕ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореИрдВ рдПрдХ рд╕рд╛рдЬрд┐рд╢ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореИрдВрдиреЗ рдЦреЗрд▓ рдкреВрд░рд╛ рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рд░ рд╣рдлреНрддреЗ 4 рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛, рдПрдХ рдорд┐рдиреАрдмрд╕ рдореЗрдВ, рдЬрдм рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдо рдкрд░ рдЧрдпрд╛ред рдФрд░ рдЗрддрдиреЗ рдХрдо рд╕рдордп рдореЗрдВ рднреА рдореИрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦ рд╕рдХрддрд╛ рдерд╛редрдпрджрд┐ рдХреБрдЫ рднреА рд╣реЛ, рддреЛ рдореВрд▓ рдЧреЗрдо рдореЗрдВ рдХреЛрдИ рд╕рд╛рдЬрд┐рд╢ рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА рдЗрд╕рдХреЗ рдХреЛрдИ рд╕рдВрдХреЗрдд рд╣реИрдВред рдФрд░ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рднреВрдЦрдВрдб рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ (рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреЛрдИ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреЗрд▓ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рднреА рдиреЛрдЯреНрд╕ рдкрдврд╝реЗрдВ)ред рдЗрд╕ рдЧреНрд░рд╛рдлреЛрдореИрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рддреАрди рд▓рдХреНрд╖реНрдп рд╣реИрдВ: рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЙрдЪрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛, рдЕрдХрдердиреАрдп рдЦреЗрд▓ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдордЭрд╛рдирд╛ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдЕрдкрдиреЗ рдЦреЗрд▓ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдЕрдзрд┐рдХ рд░реБрдЪрд┐редрдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдкрдЯрдХрдерд╛ рд▓рд┐рдЦреА: рдкрд╣рд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ 2-3 рд╕рдкреНрддрд╛рд╣ рдореЗрдВ 40-50 рд╡рд╛рдХреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдиреА рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдлрд┐рд░, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдЯ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡рд╛рдХреНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪреБрдирд╛, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд╛рдХреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ, рдореИрдВрдиреЗ рдиреЛрдЯ рдореЗрдВ 2-3 рд╡рд╛рдХреНрдп рдЬреЛрдбрд╝реЗ, рдЙрдиреНрд╣реЗрдВ рдореЛрдиреЛрд▓реЙрдЧ (рдпрд╛ рдХрдерди рдХреЗ рдЕрдиреНрдп рд░реВрдкреЛрдВ) рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рддреИрдпрд╛рд░ рд╕рдВрддреБрд▓рд┐рдд рдиреЛрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред рдирддреАрдЬрддрди, рд╕рднреА рдиреЛрдЯреЛрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрд╡рд╛рдЧрдд рд╕реЗ рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдХреБрд▓ 160 рд╡рд╛рдХреНрдп рдЬрдорд╛ рд╣реЛ рдЧрдП рдереЗредрдФрд░ рдЖрдкрдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдореЗрд░реЗ рдЦреЗрд▓ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЕрддрд╛рд░реНрдХрд┐рдХ рдмрд╛рддреЗрдВ рд╣реИрдВ, рдФрд░ рдХрд╣рд╛рдиреА рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрдп рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╛рда рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рдиреА рдирд╣реАрдВ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рдХреНрдп рдиреЗ рдпрд╛ рддреЛ рдЕрд░реНрде рдХреЗ рд╕рд╛рде рднрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╛ рд╕рд╛рдЬрд┐рд╢ рдХреЗ рдЫреЗрдж рдХреЛ рдмрдВрдж рдХрд░рдиреЗ, рдпрд╛ рдХрд╣рд╛рдиреА рдХреЗ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рд▓реЗрдЦрди рдХрд╛ рд╕реНрддрд░ рд╕рдВрджрд┐рдЧреНрдз рдмрдирд╛ рд╣реБрдЖ рд╣реИредрддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реА рд╣реИ? рдпрджрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рддреЛ рдпрд╣ рдкреЛрд░реНрдЯрд▓ рдкреНрд▓реЙрдЯ рд╣реИ, рдХреЗрд╡рд▓ рджреБрдирд┐рдпрд╛ рдХреЗ рдПрдХ рдЦреБрд▓реЗ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдкрд╛рддреНрд░реЛрдВ (рдЕрдзрд┐рдХ рдореВрдбреА) рдХреЗ рд╕рд╛рдеред рд╡реИрд╕реЗ, рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ: рддрд░реНрдХ, рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдпрд╛ рд░реВрд╕реА рднрд╛рд╖рд╛ (рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рднреА) рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдирд┐рд░реНрдЬреАрд╡ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд▓рд┐рдВрдЧ рдФрд╕рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЕрдЪрд╛рдирдХ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЕрдЪрд╛рдирдХ) рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рдЧрдИ, рддреЛ рдореИрдВ рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕рднреА рдЦреЗрд▓ рдиреЛрдЯреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛:рд▓рд┐рдкрд┐:
, , (3 )
(1 )
, RLIS (2 )
:
[1] . [3] : , , , , .. . [3] , , , ([2] , , ). (4)
[4] , . [5] , . [6] . [6] , . [7] . (5)
[8] : . [9] (- ) . [10] ( ). (3)
[11] . [12] , , , . [13] . [13] , . (3)
[15] ([14] тАФ , , ). [15] ( ) ([16] ). (4)
[17] . [18] ┬л┬╗. [18] . [19]- . (4)
[20] ┬л┬╗. [21] , . [22] , . (3)
[23] . [24] . [25] ┬л ┬╗. (3)
[26] , . [27] , - , . [28] ┬л ┬╗. [29] . (4)
[30] - ( ?) ( , ). [31] . [32] , ([33] , ), - , . [34] . [35] , . [36] ( ): 10 (10 = 1 ) . [X]- ( ) , ( 2 1 ?). [37] 2 . (9)
рдХрд╛рдЧрдЬрд╛рдд():
1) {} ┬л┬╗ , . , . - , .
2) {} RLIS (reasonable likeness in simulation) тАФ . . RLIS ( ) тАФ .
3) {} RLIS 100 : , , , , .. , , , . , .
4) {} , . , , , , . magnum opus .
5) {ARSotLotC} , . , . , .
6) {} -!!! - , . , , , . , , , . 2 : .
7) {} , backup , . : , . , , .
8) {} . , . , , , ( ).
9) {} , , -. ? . , . , . тАж
10) {} - , . . , тАж
11) {ARSotLotC} . , ┬л┬╗ , , . , тАж .
12) {} , ┬л┬╗ . . ┬л┬╗, . . .
13) {} , . , . , . .
14) {} , , ( ). тАФ , . : , .
15) {} тАФ . , . . , , .
16) {} ? , . .
17) {} . . , ┬л┬╗. . , , .
18) {} ┬л┬╗. , ? , , .
19) {} ┬л┬╗ , . , , , , . . .
20) {} '' ''. , , '' '', , .
21) {} '' : , ''. , . .
22) {ARSotLotC} : , . , .
23) {} , . ' '. , .
24) {} , , . , . , .
25) {} . , - . , , ' '.
26) {} . , . . ' ' !
27) {} ' ' , . . : , , .
28) {ARSotLotC} - < > . . . , .
29) {ARSotLotC} . ? , (- , ) ARSotLotC (Automatic Recording System of the Logs of the Complex).
30) {ARSotLotC} ┬л┬╗ , . , , . - , backup . , , .
31) {ARSotLotC} : . , . . backup.
32) {ARSotLotC} . . , . .
33) {ARSotLotC} ( backup'). .
34) {ARSotLotC} , . , , 10 . , . Ps: , , .
35.1) {} . . ' ' . , , ''. , - , . ' '.
35.2)
рдХреЛрдб рдЖрдзрд╛рд░рдЪреВрдВрдХрд┐ рдореЗрд░реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдерд╛ред рдореВрд▓ рдХреЛрдб рдмреЗрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд╕реАрдХреНрд╡реЗрд▓ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ 2-3 рдЧреБрдирд╛ рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ (рднрд▓реЗ рд╣реА рдореВрд▓ рдореЗрдВ рдХреЛрдб рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА 900 рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдмрдВрдбрд▓ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдпрд╛ GetChild) рдФрд░ рд▓реВрдк рдЬреИрд╕реЗ рдмрдВрдбрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдбрд░рддрд╛ рдерд╛ред )редрдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде, рдХреЛрдб рдХреА рд╕рдордЧреНрд░ рдЧреБрдгрд╡рддреНрддрд╛ рднреА рдмрдврд╝ рдЧрдИ, рд▓реЗрдХрд┐рди рдореИрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪ рдирд╣реАрдВ рд╕рдХрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреЛрдб рдореЗрдВ рд╣реА рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рдЬреНрдЮрд╛рди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВ рдЕрдкрдиреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдореЗрд░реА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрд▓рддреА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЛрдб рд▓реЗрдВ: public class VelocityRotate : MonoBehaviour { public float rotate = 0f; public bool oneTime = true; private bool active = true; public void OnTriggerEnter2D(Collider2D collision) { if (active == true) { if (oneTime == true) { active = false; } Rigidbody2D rb = collision.GetComponent<Rigidbody2D>(); Vector2 vel = rb.velocity; rb.velocity = RotateVector(vel, rotate); } } public Vector2 RotateVector(Vector2 a, float offsetAngle) { float power = Mathf.Sqrt(ax * ax + ay * ay); float angle = Mathf.Atan2(ay, ax) * Mathf.Rad2Deg - 90f + offsetAngle; return Quaternion.Euler(0, 0, angle) * Vector2.up * power; } }
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭ рд▓рд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ? рдФрд░ рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдмрдирд╛рддреЗ рд╣реИрдВ: public class VelocityRotate : MonoBehaviour { // public float rotate = 0f;// public bool oneTime = true;// private bool active = true;// public void OnTriggerEnter2D(Collider2D collision) { if (active == true) { if (oneTime == true)// { active = false; } // Rigidbody2D rb = collision.GetComponent<Rigidbody2D>(); Vector2 vel = rb.velocity; rb.velocity = RotateVector(vel, rotate); } } public Vector2 RotateVector(Vector2 a, float offsetAngle)// { float power = Mathf.Sqrt(ax * ax + ay * ay);// float angle = Mathf.Atan2(ay, ax) * Mathf.Rad2Deg - 90f + offsetAngle; // offset' return Quaternion.Euler(0, 0, angle) * Vector2.up * power; // } }
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдХрдореА рдЦреЗрд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░реА рдкрд╣рд▓реА рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЧрд▓рддреА рд╣реИ! рдЗрд╕рдХреЗ рдкреВрд░реЗ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдпрд╣ рдмрддрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рднреА рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдб рдХреА рдпрд╣ рдпрд╛ рдЙрд╕ рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЫреЛрдЯреЗ рдЗрдВрдбреА рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЦреИрд░, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдЦреЗрд▓ рдХреЛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рднрд╡рд┐рд╖реНрдп рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЯреАрдо рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЙрдкрдпреЛрдЧреА рдЖрджрдд рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдХрднреА рднреА рдореБрдЭ рдкрд░ рдПрдХ рдЪрд╛рд▓ рдЪрд▓реЗрдЧрд╛ред рдореБрдЭреЗ рдЕрдм рдмрд╕ рдЗрд╕ рдЧрд▓рддреА рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ: рдЗрд╕рдиреЗ рдореБрдЭреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрд░реА рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдмрд╛рд░, рдореИрдВрдиреЗ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдореИрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВрдВрдЧрд╛редрдХреАрдбрд╝реЗ рдФрд░ рдЦрд╛рдорд┐рдпрд╛рдВрдХрдИ рдХреАрдбрд╝реЗ рдереЗред рдмрд╣реБрдд! рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдкреВрд░реЗ рдорд╣реАрдиреЗ (рдЕрдЧрд╕реНрдд) рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рд╕рднреА рдкреНрд░рд▓реЗрдЦрд┐рдд рдмрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдЯ рдбрд╛рд▓рд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИ):GB2 рдЪреЗрдХрд▓рд┐рд╕реНрдЯ:
// тАФ
\ тАФ
//1) , ,
//2) :
//3)
//4) TipsGamePlay
//5) ( )
//6) 0:
//7) 1: ()
//8)
//9) 2: 2
//10)
//11) 4:
//12) layer Player
//13) 7: ()
//14) 8: ( 1)
//15) 8:
\16) ( )
\17) 8: zero
//18)
//19) 1:
//20) ,
//21)
//22) timescale=0
//23) 6:
//24) 0:
//25)
//26) 7:
//27) 7:
//28) AspectRatio
\29)
//30)
//31) <EXfgpy)b> //32) 7: -
//33) ,
//34) 9:
//35) 9:
//36) 'loop'
//37) 10:
//38) 11: ()
//39) 11:
//40) 11:
//41) 11:
//42) 11:
//43) 11:
//44) ( )
/45) 12:
\46) Raycast
\47) ( static, dynamic, kinematic)
//48) (next level, next start, next end)
\49) 1: elevatorsave = 0
\50) offset angle,
//51) 2:
//52)
//53) 7:
//54) next save
//55) Dynamic Graph
//56) 11: ( )
57) 11:
//58) 9: ()
//59) 11: ( )
//60) 12: ( 2 . active , . .
61) :
//62) : -
//63) :
64)
//65) (. )
//66)
//67) HealthBar
68) 0:
//69) localposition position
70) 14: bool isPresentation
//71) 17: 2 4
72) ()
\73)
//74)
//75) layer,
//76)
//77) 2: 1
\78) ( )
//79)
//80) 3: ,
//81)
//82) 6: ,
//83) 6: 1
//84) 6:
//85) 7: 40. .
//86)
//87) 9:
//88) 32:
//89) offsetAngle elevator
//90) 11:
//91) ( )
//92)
//93)
//94)
//95) 13:
//96) 15:
/97) 3 isshotmode
//98) 17:
//99) 18: ,
//100) 19: ( )
/101) 20:
\102) Tramp
//103) 20:
\104)
//105) 11: ui
//106) text arial
\107)
//108)
//109) 3:
//110) 3:
//111) 3: ,
//112) ,
//113) ()
//114) 4:
//115) ( )
//116) ()
//117) pointsAnimation basicAnimation
//118) 7:
//119) 9:
//120) AudioBase
//121) pointsAnimation
//122) , ( )
//123) 13: HealthBar
//124) 13: ,
//125) 14: kinematic (. )
//126) 14:
//127) 14: ,
//128) velocityField ( , )
//129) 16: velocityField
//130) 22:
//131) 22:
\132) 25:
//133) 26:
//134) 27:
\135) ( )
//136)
//137) :
//138) ( )
//139)
//140) 8:
//141) ( 1.5-2, -oneshot'
\142) lerp
//143) , , ( , )
//144) 22:
//145) 11:
//146) 11:
//147) 11:
//148)
//149) ┬лHome┬╗ ┬лMenu┬╗
//150)
//151)
//152)
\153) ( healthEnd)
//154) :
//155) 33: ,
//156) 15: ( 0.1)
//157) 15: velocityfield healthbar
//158)
//159) basicAnimation (27)
//160) (18, 27)
//161)
\162) 19: -
//163) ( trigger collision)
//164) 20: 50 250
//165) shotmode
//166) 27:
//167) 28:
//168) 17:
//169) tag boss3
\170) ( , )
//171) 35
//172) : , 600 ┬лI'll come back┬╗
//173) 33:
//174)
//175) HealthBar
//176) ( damage-
//177) 27:
0) (0)
1) (2)
2) (2)
3) (1)
4) (1)
5) (1)
6) (1)
7) (1)
8) (2)
9) (1)
10) (0)
11) (1)
(13)
12) (0)
13) (2)
14) (2)
15) (0)
16) (0)
17) (1)
18) (1)
19) (3)
20) (0)
21) (3)
22) (1)
(13)
23) (1)
24) (1)
25) (0)
26) (0)
27) (0)
28) (3)
29) (1)
30) (2)
31) (0)
32) (0)
33) (1)
34) (1)
(10)
рдФрд░ рдЬреЛ рдмрд╛рдд рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ, рд╡рд╣ рджреЛрд╖ рд╣реИред рдФрд░ рдЫреЛрдЯреЗ рдирд╣реАрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХреАрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рд▓реЛрдЧ, рдЬреЛ рдЦреЗрд▓ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рджреЛрд╖реЛрдВ рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рджреЛрд╖реЛрдВ рд╕реЗ рдирд╣реАрдВ рд╣реИред рдЦреЗрд▓ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдмрдирд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реВрдВредрддреЛ рдореЗрд░реЗ рдореБрдЦреНрдп рджреЛрд╖ рдХреНрдпрд╛ рд╣реИрдВ?- . , . 2 3-4 . , , : 10 . , . .
- , . , , , , .
- . , ┬л ┬╗ 60% . , .
рд╕реНрдерд╛рдиреАрдпрдХрд░рдгрдкреВрд░реНрдгрд░реВрдкреЗрдг рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдХрд╛рд░рдг, рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкрд╛рда рдХреА рдорд╛рддреНрд░рд╛ рд▓рдЧрднрдЧ 30 рдЧреБрдирд╛ рдмрдврд╝ рдЧрдИ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдиреБрд╡рд╛рдж рддрдХрдиреАрдХ рдереЛрдбрд╝реА рдирд╣реАрдВ рдмрджрд▓реА рд╣реИ: рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ Google рдЕрдиреБрд╡рд╛рдж рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВред рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рд╕реАрдзреЗ рд░реВрд╕реА рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛, рдФрд░ рдЕрдм рдореИрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реВрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЧрдИ: рдпрджрд┐ рдореВрд▓ рдЧреЗрдо рдореЗрдВ 18 рднрд╛рд╖рд╛рдПрдВ рдереАрдВ, рдФрд░ рдЗрд╕рдХреЗ рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЙрди рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреЛ Google рд╕рдорд░реНрдерд┐рдд рдереАрдВ, рддреЛ рдЕрдЧрд▓реА рдХрдбрд╝реА рдХреЗрд╡рд▓ 10 рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдИ рдереА: рдЦреЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рдкреГрд╖реНрда рдкрд░ рдХреНрдпрд╛ рд╣реИ (рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдЧрд▓реА рдХрдбрд╝реА рд╣реИ рдореВрд▓ рд╕реЗ рд╣реАрди)редрд╕рд╛рдорд╛рдиреНрдп рдиреЛрдЯреНрд╕-рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рда рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рд░рд▓ рддрд╛рд░ рдХреЗ рдмрдЬрд╛рдп, рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдерд╛:рд╕реНрдХреНрд░рд┐рдкреНрдЯ StringLanguageMinimize [System.Serializable] public class StringLanguageMinimize { public string english = ""; public string spanish = ""; public string italian = ""; public string german = ""; public string russian = ""; public string french = ""; public string portuguese = ""; public string korean = ""; public string chinese = ""; public string japan = ""; public string GetString() { string ret = ""; switch (PlayerPrefs.GetString("language")) { case "english": ret = english; break; case "spanish": ret = spanish; break; case "italian": ret = italian; break; case "german": ret = german; break; case "russian": ret = russian; break; case "french": ret = french; break; case "portuguese": ret = portuguese; break; case "korean": ret = korean; break; case "chinese": ret = chinese; break; case "japan": ret = japan; break; } return ret; } }
рдФрд░ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╡рд░реНрдЧ:рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯрд░реНрдорд┐рдирд▓ [System.Serializable] public class StringLanguage { [TextArea] public string english = ""; [TextArea] public string spanish = ""; [TextArea] public string italian = ""; [TextArea] public string german = ""; [TextArea] public string russian = ""; [TextArea] public string french = ""; [TextArea] public string portuguese = ""; [TextArea] public string korean = ""; [TextArea] public string chinese = ""; [TextArea] public string japan = ""; public string GetString() { string ret = ""; switch (PlayerPrefs.GetString("language")) { case "english": ret = english; break; case "spanish": ret = spanish; break; case "italian": ret = italian; break; case "german": ret = german; break; case "russian": ret = russian; break; case "french": ret = french; break; case "portuguese": ret = portuguese; break; case "korean": ret = korean; break; case "chinese": ret = chinese; break; case "japan": ret = japan; break; } return ret; } }
рдЕрдЧрд▓рд╛ рдЯрд░реНрдорд┐рдирд▓ рдЯреНрд░рд┐рдЧрд░ рдХреЛрдб рдерд╛:рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯрд┐рдкреНрд╕ рдЗрдирдкреБрдЯ using UnityEngine; public class TipsInput : MonoBehaviour { public int idTips = 0; public bool isPress2Read = true; public bool oneTime = true; private bool active = true; public GameObject[] copys; private Data data; private Press2Read p2r; private TipsInput ti; private void Awake() { data = GameObject.FindWithTag("MainCamera").GetComponent<Data>(); p2r = GameObject.FindWithTag("Press2Read").GetComponent<Press2Read>(); ti = GetComponent<TipsInput>(); } public void OnCollisionEnter2D(Collision2D collision) { if (collision.transform.CompareTag("Player")) { if (isPress2Read == false && active == true) { Disable(); data.SetDialoge(idTips); if (copys.Length != 0) { for (int i = 0; i < copys.Length; i++) { copys[i].GetComponent<TipsInput>().Disable(); } } } else if (isPress2Read == true) { p2r.Active(ti); } } } public void OnCollisionExit2D(Collision2D collision) { if (isPress2Read == true) { p2r.DeActive(); } } public void Disable() { if (oneTime == true) { active = false; } return; } }
рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд░реНрдЧ рдбреЗрдЯрд╛:рдбреЗрдЯрд╛ using UnityEngine; using UnityEngine.UI; using System.Collections; public class Data : GlobalFunctions { public Dialoge[] dialoges; public DeadPhrases[] deadPhrases; public GamePlay[] gameplay; [Space] public Tips tips; public AudioBase audioBase; public TipsGamePlay gamePlayTips; public Image slowmobonus; public Text fpsText; public float scaleTips = 1f; public float scaleGameUI = 1f; public float scaleSlowMo = 1f; private float speed = 0f; private float target = 1f; private float timeDuration = 1f; private int updFPS = 0; public void Awake() { scaleTips = scaleGameUI = scaleSlowMo = 1f; slowmobonus.color = new Color(0f, 0f, 0f, 0f); } public void Start() { StartCoroutine(SecFPSUpdate()); } public void SetDialoge(int id) { if (dialoges.Length != 0) { tips.SetActiveTrue(dialoges[id].dialogeStrings, dialoges[id].name); } } public void FalseP2R() { tips.SetFalse(); } public string GetDeadPhrase(string typeDead) { int idType = -1; for (int i = 0; i < deadPhrases.Length; i++) { if (deadPhrases[i].typeDead == typeDead) { idType = i; break; } } if (idType == -1) { return typeDead; } int rand = Random.Range(0, deadPhrases[idType].deadPhrases.Length); return deadPhrases[idType].deadPhrases[rand].GetString(); } public string GetDeadPhrase2() { string ret = ""; switch (PlayerPrefs.GetString("language")) { case "english": ret = "Tap to continue"; break; case "spanish": ret = "Pulse para continuar"; break; case "italian": ret = "Tocca per continuare"; break; case "german": ret = "Tippen Sie, um fortzufahren"; break; case "russian": ret = " "; break; case "french": ret = "Appuyez sur pour continuer"; break; case "portuguese": ret = "Clique para continuar"; break; case "korean": ret = "ъ│ДьЖНэХШыадый┤ эГнэХШьД╕ьЪФ"; break; case "chinese": ret = "чВ╣цМЙхН│хПпч╗зч╗н"; break; case "japan": ret = "уВ┐уГГуГЧуБЧуБжч╢ЪшбМуБЧуБ╛уБЩ"; break; } return ret; } public void PauseGameUI(float time) { scaleGameUI = time; Update(); audioBase.UpdateSound(); } public void SetGamePlayTips(int id) { if (id == -1) { gamePlayTips.SetActiveTrueSaved(); } else { gamePlayTips.SetActiveTrue(gameplay[id]); } } public void SlowMo(float timeDuration2, float setSlowMo, float speed2) { speed = speed2; target = setSlowMo; timeDuration = timeDuration2; Update(); audioBase.UpdateSound(); } public void SlowMo(float timeDuration2) { scaleSlowMo = 0.1f; float sb = (1f - scaleSlowMo) * 0.3921569f; slowmobonus.color = new Color(0f, 0f, 0f, sb); Update(); audioBase.UpdateSound(); } public IEnumerator EndAnim(float timeDuration) { yield return new WaitForSeconds(timeDuration); End(); } public void End() { scaleSlowMo = 1f; float sb = (1f - scaleSlowMo) * 0.3921569f; slowmobonus.color = new Color(0f, 0f, 0f, sb); Update(); audioBase.UpdateSound(); } public void End2(float timeDuration2) { if (timeDuration2 == 0) { End(); return; } StartCoroutine(EndAnim(timeDuration2)); } private void Update() { Time.timeScale = scaleTips * scaleSlowMo * scaleGameUI; Time.fixedDeltaTime = 0.03f * scaleSlowMo * scaleTips; updFPS = updFPS + 1; return; } private IEnumerator SecFPSUpdate() { yield return new WaitForSeconds(1f); fpsText.text = "FPS: " + updFPS; updFPS = 0; StartCoroutine(SecFPSUpdate()); } }
рдФрд░ рдореБрдЦреНрдп рдЯрд┐рдкреНрд╕ рд╡рд░реНрдЧ, рдЬреЛ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯрд┐рдкреНрд╕ using System.Collections; using UnityEngine.UI; using UnityEngine; public class Tips : GlobalFunctions { public Data data; public Press2Read p2r; public GameUI gameUI; public GameObject obj; public AudioClip setClip; public Text nameText; public Text txt; private int textID = 0; private int textsID = 0; private AudioBase audioBase; private DialogeString textActive; private DialogeString[] textsActive; private bool isMass = false; [TextArea] public string end = ""; [TextArea] public string endPast = ""; public void Start() { audioBase = GameObject.FindWithTag("MainCamera").GetComponent<AudioBase>(); data.scaleTips = 1f; obj.SetActive(false); txt.text = ""; } public void SetActiveTrue(DialogeString text, StringLanguageMinimize name) { data.scaleTips = 0.1f; audioBase.layerSounds[0].volume /= 10f; obj.SetActive(true); nameText.text = name.GetString(); gameUI.pauseButton.SetActive(false); textActive = text; isMass = false; StartCoroutine(TimerFalse()); } public void SetActiveTrue(DialogeString[] texts, StringLanguageMinimize name) { data.scaleTips = 0.1f; audioBase.layerSounds[0].volume /= 10f; obj.SetActive(true); nameText.text = name.GetString(); gameUI.pauseButton.SetActive(false); textsActive = texts; isMass = true; StartCoroutine(TimersFalse()); } public IEnumerator TimerFalse(float time = 0.02f) { yield return new WaitForSecondsRealtime(time); string ds = textActive.dialogeString.GetString(); if (textID < ds.Length && ds != end) { audioBase.SetSound(setClip, 1, 0.5f, TypePlaying.Sound, false); end = end + ds.Substring(textID, 1); txt.text = endPast + end; textID = textID + 1; if (textID + 1 != ds.Length && ds != end) { if (ds.Substring(textID + 1, 1) == ",") { StartCoroutine(TimersFalse(0.1f)); } else if (ds.Substring(textID + 1, 1) == ".") { StartCoroutine(TimersFalse(0.15f)); } else if (ds.Substring(textID + 1, 1) == "?") { StartCoroutine(TimersFalse(0.15f)); } else if (ds.Substring(textID + 1, 1) == ".") { StartCoroutine(TimersFalse(0.15f)); } else { StartCoroutine(TimersFalse()); } } else { StartCoroutine(TimersFalse()); } } else { endPast = txt.text; if (textActive.isSkip) { if (textActive.skipOffset == 0f) { SetActiveFalse(); } else { IsSkip(textActive.skipOffset); } } } } public IEnumerator TimersFalse(float time = 0.02f) { yield return new WaitForSecondsRealtime(time); string ds = textsActive[textsID].dialogeString.GetString(); if (textID < ds.Length && ds != end) { audioBase.SetSound(setClip, 1, 0.5f, TypePlaying.Sound, false); end = end + ds.Substring(textID, 1); txt.text = endPast + end; textID = textID + 1; string ds1 = textsActive[textsID].dialogeString.GetString(); if (textID + 1 != ds1.Length && ds1 != end) { if (ds1.Substring(textID + 1, 1) == ",") { StartCoroutine(TimersFalse(0.1f)); } else if (ds1.Substring(textID + 1, 1) == ".") { StartCoroutine(TimersFalse(0.15f)); } else if (ds1.Substring(textID + 1, 1) == "?") { StartCoroutine(TimersFalse(0.15f)); } else if (ds1.Substring(textID + 1, 1) == "!") { StartCoroutine(TimersFalse(0.15f)); } else { StartCoroutine(TimersFalse()); } } else { StartCoroutine(TimersFalse()); } } else { endPast = txt.text; if (textsActive[textsID].isSkip) { if (textsActive[textsID].skipOffset == 0f) { SetActiveFalse(); } else { IsSkip(textsActive[textsID].skipOffset); } } } } public IEnumerator IsSkip(float time) { yield return new WaitForSecondsRealtime(time); SetActiveFalse(); } public void SetFalse() { obj.SetActive(false); gameUI.pauseButton.SetActive(true); end = ""; endPast = ""; txt.text = ""; textID = textsID = 0; data.scaleTips = 1f; audioBase.layerSounds[0].volume *= 10f; } public void SetActiveFalse() { if (isMass == false) { if (textActive.dialogeString.GetString() != end) { end = textActive.dialogeString.GetString(); if (textActive.isSkip) { SetActiveFalse(); } } else { obj.SetActive(false); gameUI.pauseButton.SetActive(true); end = ""; data.scaleTips = 1f; audioBase.layerSounds[0].volume *= 10f; } } else { if (textsActive[textsID].dialogeString.GetString() != end) { if (textsActive[textsID].isStep == true) { txt.text = end = textsActive[textsID].dialogeString.GetString(); if (textsActive[textsID].isSkip) { SetActiveFalse(); } } else { end = textsActive[textsID].dialogeString.GetString(); txt.text = endPast + end; } } else { if (textsID != textsActive.Length - 1) { textsID = textsID + 1; textID = 0; end = ""; if (textsActive[textsID].isStep == true) { endPast = ""; } StartCoroutine(TimersFalse()); } else { obj.SetActive(false); gameUI.pauseButton.SetActive(true); p2r.UnTap(); end = ""; endPast = ""; txt.text = ""; textID = textsID = 0; data.scaleTips = 1f; audioBase.layerSounds[0].volume *= 10f; } } } } }
рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рдкрд╛рда рдмрд╕ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП IEnumerator рдХреА рдорджрдж рд╕реЗ рдореИрдВрдиреЗ рдкрд╛рда рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ (рдЕрдВрдд рдореЗрдВ рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡)редрд░рд┐рд▓реАрдЬ рдХреЗрд╢реБрд░реВ рдореЗрдВ, рдореЗрд░реА рдпреЛрдЬрдирд╛ 1 рд╕рд┐рддрдВрдмрд░ рдХреЛ рдЦреЗрд▓ рдбрд╛рд▓рдиреЗ рдХреА рдереАред рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрд┐рдпрд╛: рдЖрдЦрд┐рд░реА рд╕рдордп рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдВрдд рдореЗрдВ 4 рдХреАрдбрд╝реЗ рдереЗ (рдФрд░ рдпрд╣ рднреА рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рд╢рд╛рдо рдХреЛ рдЦреЗрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЪреЗрдХ рдХреЛ 7 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрд░реА рд╣реЛ рдЧрдИ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдСрдлрд╝рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдерд╛ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдорд╛рдорд▓рд╛ рдЦрд╛рддреЗ рдореЗрдВ рд╣реИ, рдЬреЛ "рдкрд░рд┐рднрд╛рд╖рд┐рдд" рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдореЙрдбрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИредрдкреАрдЖрд░ рдореЗрд░реЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рдХрдард┐рди рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреИрд╕реЗ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рдереЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдЦреЗрд▓ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рд░рд▓ рддрд░реАрдХреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛: рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реАрдХреЗ рдореЗрдВ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдлреЗрдВрдХ рджрд┐рдпрд╛, рд░реЗрдбрд┐рдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдмрдирд╛рдП, рдЗрд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдо рдкрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛, рд╕рдВрдЧреАрдд рдХреЗ рд▓реЗрдЦрдХреЛрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЖрджрд┐ред рдФрд░ рдЗрд╕рдиреЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдпрд╛:рдкрд░рд┐рдгрд╛рдордЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рджрд┐рди рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдпрд╣ рд▓реЗрдЦ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЖрдИрдЯреА рдореЗрдВ 3 рд╕рд╛рд▓ рдмрд┐рддрд╛рдП рдереЗ! рдФрд░ рдореЗрд░реА 16 рд╕рд╛рд▓ рдХреА рдЙрдореНрд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЙрд╕реА рджрд┐рди, рдЬрдм рдореИрдВ 13 рд╕рд╛рд▓ рдХрд╛ рдерд╛, рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛: рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реАрдЦрдирд╛ рдФрд░ рдПрдХ рдбреНрд░реАрдо рдЧреЗрдо рдмрдирд╛рдирд╛ред рдФрд░ рдЙрд╕ рдХреНрд╖рдг рд╕реЗ, рдХреБрдЫ рд╣рдж рддрдХ, рдореЗрд░рд╛ рд╕рдкрдирд╛ рд╕рдЪ рд╣реЛ рдЧрдпрд╛редрдЦреЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореИрдВ рдЙрд╕рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реВрдВред рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдареАрдХ рд╣реИ, рдЦреЗрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЦреЗрд▓ рдХреБрдЫ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдЦреЗрд▓ рдХрд╛ рдореБрджреНрд░реАрдХрд░рдг рдХрд░рдирд╛ рдЕрдкрдорд╛рдирдЬрдирдХ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ рд╣реИ, рджрд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рднреБрдЧрддрд╛рди рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИрдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рдЦреЗрд▓ рджреЗрд╡ рдореЗрдВ рдмрдиреЗ рд░рд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬреАрд╡рди рдХреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдРрд╕реА рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрдм рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмрдирдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЦреБрдж рдкрд░ рд╡рд┐рдХрд╛рд╕, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдм рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рдЬрд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдд рдЬреЛ рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд╣реИ: рдпрд╣ рд╕рдВрднрд╡рдд: рдПрдХрддрд╛ рдЗрдВрдЬрди рдкрд░ рдореЗрд░рд╛ рдЖрдЦрд┐рд░реА рдЧреЗрдо рд╣реИредрдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрджрд┐ рдореЗрд░реА рдХрд╣рд╛рдиреА рдЕрд░рд╛рдЬрдХ рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдВ, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВредрдкреБрдирд╢реНрдЪ: рдХрд┐рд╕реА рдХреЛ рдЖрдЦрд┐рд░реА рдЯреНрд░реЗрд▓рд░ рдкрд╕рдВрдж рдЖрдпрд╛:рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдБ рдЗрд╕ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдЯреНрд░реЗрд▓рд░ рд╣реИ: