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

рдлрд┐рд░ рдорд╛рдирджрдВрдбреЛрдВ рдФрд░ рдпреВрд╡реА рдбреЗрдЯрд╛ рдиреЗ рдЫрд╛рдпрд╛рдВрдХрди, рд░рдВрдЧ рдФрд░ рдмрдирд╛рд╡рдЯ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдореЗрд╖ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЬрд╛рд▓ рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореЗрд╖ рд░реЗрдВрдбрд░рд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреГрд╢реНрдп рдореЗрдВ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред
рдпрд╣реА рд╣реИ, рдПрдХ 3D рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрджреНрдордХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- "MyMesh" рдирд╛рдордХ рдПрдХ рдирдпрд╛ рдЬрд╛рд▓ рдмрдирд╛рдПрдВред
- MyMesh рдХреЗ рдХреЛрдиреЗ рдФрд░ рддреНрд░рд┐рдХреЛрдг рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВред
- "MyMeshFilter" рдирд╛рдордХ рдПрдХ рдирдпрд╛ рдореЗрд╖ рдлрд╝рд┐рд▓реНрдЯрд░ рдмрдирд╛рдПрдВред
- рдореЗрд╖ рд╕рдВрдкрддреНрддрд┐ myMesh рдХреЗ рд▓рд┐рдП MyMeshFilter рд╕реЗрдЯ рдХрд░реЗрдВред
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдореВрд▓ рдмрд╛рддреЗрдВ рдХрд░рдиреЗ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдпреВрдирд┐рдЯреА рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд░реНрдХрдкреАрд╕ рдХреЛ рдЪрд▓рд╛рдПрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рджреЗрдЦреЗрдВ:
рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг:
- рдкреНрд░реАрдлрд╝реИрдмреНрд╕ : рдЗрд╕рдореЗрдВ рд╕реНрдлреАрдпрд░ рдкреНрд░реАрдлрд╝реИрдм рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди 3 рдбреА рдореЗрд╖ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рджреГрд╢реНрдп : рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддреАрди рджреГрд╢реНрдп рд╣реИрдВред
- рд╕рдВрдкрд╛рджрдХ : рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрдВ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╕реБрдкрд░-рдлреАрдЪрд░реНрд╕ рджреЗрддреА рд╣реИрдВ рдЬреЛ рд╣рдо рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
- рд▓рд┐рдкрд┐рдпреЛрдВ : рдпрд╣рд╛рдВ рд░рди-рдЯрд╛рдЗрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ рдЬреЛ рдЧреЗрдордСрдмрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИрдВ рдФрд░ рдЬрдм рдЖрдк рдкреНрд▓реЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
- рд╕рд╛рдордЧреНрд░реА : рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рд▓реА рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рд╣реИред
рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдПрдХ 3 рдбреА рдореЗрд╖ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╕рдВрдкрд╛рджрдХ рдмрдирд╛рдПрдВрдЧреЗред
рдХрд╕реНрдЯрдо рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рдореЗрд╖ рдмрджрд▓реЗрдВ
рдкрд░реНрджреЗ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд
01 рдореЗрд╖ рдЕрдзреНрдпрдпрди рдбреЗрдореЛ рдЦреЛрд▓реЗрдВред
рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ 3D рдШрди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдореЗрд╖ рдореЗрдВ рдЖрдПрдВ, рдХрд╕реНрдЯрдо рд╕рдВрдкрд╛рджрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдПрдХ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред
рдПрдХ рд╕рдВрдкрд╛рджрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдВрдкрд╛рджрди
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ
рд╕рдВрдкрд╛рджрдХ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рд╕рдВрдкрд╛рджрдХ (рд╕рдВрдкрд╛рджрдХ) рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдмрд┐рд▓реНрдб рдореЛрдб рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
MeshInspector.cs рдЦреЛрд▓реЗрдВ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦреЗрдВред рд╕рднреА рд╕рдВрдкрд╛рджрдХ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ
Editor
рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреА
CustomEditor
рд╡рд┐рд╢реЗрд╖рддрд╛
Editor
рд╡рд░реНрдЧ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рд╣реИред
OnSceneGUI()
рдПрдХ рдШрдЯрдирд╛ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ;
OnInspectorGUI()
рдЖрдкрдХреЛ рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд GUI рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
MeshInspector.cs рдореЗрдВ, MeshInspector
рд╡рд░реНрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
MeshInspector
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
[CustomEditor(typeof(MeshStudy))]
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
CustomEditor
рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХрддрд╛ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рд╕рдВрдкрд╛рджрдХ рд╡рд░реНрдЧ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
OnSceneGUI()
рд╕реЗ рдкрд╣рд▓реЗ
EditMesh()
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
mesh = target as MeshStudy; Debug.Log("Custom editor is running");
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
Editor
рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдорд╛рдирдХ
target
рдЪрд░ рд╣реИред рдпрд╣рд╛рдБ,
target
MeshStudy
рд░реВрдкрд╛рдВрддрд░рдг рд╣реИред рдЕрдм рдХрд╕реНрдЯрдо рдПрдбрд┐рдЯрд░ рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕рднреА GameObjects рдФрд░
рдЙрдирд╕реЗ рдЬреБрдбрд╝реА
MeshStudy.cs рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ред рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЖрдк рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╕реНрдЯрдо рд╕рдВрдкрд╛рджрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред
рд▓рд┐рдкрд┐рдпреЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдУ рдФрд░ рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
Hierarchy рдореЗрдВ GameObject
Cube рдкрд░
MeshStudy.cs рдХреЛ рдЦреАрдВрдЪреЗрдВред
рдЕрдм рд╕рдВрджреЗрд╢ "рдХрд╕реНрдЯрдо рд╕рдВрдкрд╛рджрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИ" рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИ! рдЖрдк рдбрд┐рдмрдЧ рд╕рдВрджреЗрд╢ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рди рдХрд░реЗред
рдХреНрд▓реЛрдирд┐рдВрдЧ рдФрд░ рдореЗрд╖ рдбрдВрдкрд┐рдВрдЧ
рдХрд╕реНрдЯрдо рдПрдбрд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдбрд┐рдЯ рдореЛрдб рдореЗрдВ 3 рдбреА рдореЗрд╖ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдпреВрдирд┐рдЯреА рдореЗрд╖ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред рдРрд╕рд╛ рд╣реЛрдиреЗ рдкрд░ рдЖрдкрдХреЛ рдПрдХрддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореВрд▓ рд░реВрдк рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЬрд╛рд▓ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
MeshFilter.sharedmesh
рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдЬрд╛рд▓ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬрд╛рд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
MeshStudy.cs рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
MonoBehaviour
рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ
Start()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрди рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
MeshStudy.cs рдореЗрдВ, MeshStudy
рдХреНрд▓рд╛рд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
MeshStudy
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
[ExecuteInEditMode]
рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛: рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж,
Start()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд▓реЗ рдореЛрдб рдФрд░ рдПрдбрд┐рдЯ рдореЛрдб рджреЛрдиреЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореЗрд╖ рд╡рд╕реНрддреБ рдХреЛ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
InitMesh()
рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
oMeshFilter = GetComponent<MeshFilter>(); oMesh = oMeshFilter.sharedMesh;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
MeshFilter
рдШрдЯрдХ рд╕реЗ рдореВрд▓ oMesh
рдореЗрд╖ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред- рдПрдХ рдирдП рдЬрд╛рд▓
cMesh
рд▓рд┐рдП рдХреЙрдкреА рдХрд░реЗрдВред - рдлрд┐рд░ рд╕реЗ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдЬрд╛рд▓реАрджрд╛рд░ рдЬрд╛рд▓реА рдлрд┐рд▓реНрдЯрд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИред
- рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред рд╕рдВрджреЗрд╢ "Init & Cloned" рдбрд┐рдмрдЧ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ GameObject
Cube
рдЪрдпрди рдХрд░реЗрдВ рдФрд░
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдореЗрд╖ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдПрдХ рдореЗрд╖ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ
рдХреНрд▓реЛрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдореЗрд╖ рдХреЛ рдХреНрд▓реЛрди рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рд╕рдВрдкрд╛рджрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ,
MeshInspector.cs рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВред
OnInspectorGUI()
, рдХреЛрдб рдХреА рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
if (GUILayout.Button("Reset"))
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рдпрд╣ рдХреЛрдб рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рдПрдХ рд░реАрд╕реЗрдЯ рдмрдЯрди рдЦреАрдВрдЪрддрд╛ рд╣реИред
- рдЬрдм рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдореЗрд╢рд╕реНрдЯреНрдпреВрдбреА.рдХреЗ рдореЗрдВ
Reset()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ ред
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ,
MeshStudy.cs рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдХреЛ
Reset()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
if (cMesh != null && oMesh != null)
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рд╕реНрд░реЛрдд рдФрд░ рдХреНрд▓реЛрди рдЬрд╛рд▓ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рд╕рддреНрдпрд╛рдкрдиред
- рдореВрд▓ рдЬрд╛рд▓ рдореЗрдВ
cMesh
рд░реАрд╕реЗрдЯ рдХрд░реЗрдВред cMesh
oMeshFilter
рдХреЛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯред- рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ, рдШрди рдЬрд╛рд▓ рдХреЛ рд╡рд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЯреЗрд╕реНрдЯ рдПрдбрд┐рдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ
рдХрд░реЗрдВ ред рдЗрд╕рдХреЗ рдмрд╛рдж,
рд░реАрд╕реЗрдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ; рдХреНрдпреВрдм рдХреЛ рдЕрдкрдиреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХрддрд╛ рдореЗрдВ рдХреЛрдиреЗ рдФрд░ рддреНрд░рд┐рдХреЛрдг рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛
рдПрдХ рдЬрд╛рд▓реА рдореЗрдВ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдХреЛрдиреЗ рд╣реЛрддреЗ рд╣реИрдВред рддреНрд░рд┐рдХреЛрдг рд╡рд╕реНрддреБ рдХреЗ рдореВрд▓ рдЖрдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдореЗрд╖ рд╡рд░реНрдЧ:
Vector3
рдХреЛ Vector3
рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред- рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреЛ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕рд░рдгреА рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрд░реНрдерд╛рддреН, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреНрд╡рд╛рдб рдЬрд╛рд▓ рдореЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдЪрд╛рд░ рдХреЛрдиреЗ рдФрд░ рджреЛ рддреНрд░рд┐рдХреЛрдг рд╣реЛрддреЗ рд╣реИрдВ, рдореЗрд╖ рдбреЗрдЯрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
рд╡рд░реНрдЯреЗрдХреНрд╕ рдореИрдкрд┐рдВрдЧ
рдпрд╣рд╛рдВ рд╣рдо рдХреНрдпреВрдм рдХреЗ рдХреЛрдиреЗ рдХреЛ рдиреАрд▓реЗ рдбреЙрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
MeshInspector.cs рдореЗрдВ рд╣рдо
EditMesh()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ
EditMesh()
рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВрдЧреЗ:
handleTransform = mesh.transform;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
handleTransform
mesh
рд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИредhandleRotation
рдХреЛ рд╡рд░реНрддрдорд╛рди рдЬреЛрдбрд╝ рдХрд╛ рд░реЛрдЯреЗрд╢рди рдореЛрдб рдорд┐рд▓рддрд╛ рд╣реИред- рдЬрд╛рд▓ рдХреЗ рдХреЛрдиреЗ рдХреЛ
ShowPoint()
рдФрд░ ShowPoint()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ ShowPoint()
ред
ShowPoint()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ,
//draw dot
рдХрдореЗрдВрдЯ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
Vector3 point = handleTransform.TransformPoint(mesh.vertices[index]);
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рдпрд╣ рд░реЗрдЦрд╛ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреА рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд┐рддрд┐ рдХреЛ рд╡рд┐рд╢реНрд╡ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рд╕рдордиреНрд╡рдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреА рд╣реИред
рдЙрд╕реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ,
if
рдмреНрд▓реЙрдХ рдореЗрдВ, рдХреЛрдб рдХреА рд▓рд╛рдЗрди рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдмрд╕ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рдЬреЛрдбрд╝реЗрдВ:
Handles.color = Color.blue; point = Handles.FreeMoveHandle(point, handleRotation, mesh.handleSize, Vector3.zero, Handles.DotHandleCap);
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
Handles
рд╣реЗрд▓реНрдкрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрд┐рдВрджреБ рдХрд╛ рд░рдВрдЧ, рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИредHandles.FreeMoveHandle()
рдПрдХ рдЕрд╕реАрдорд┐рдд рдЧрддрд┐ рдореИрдирд┐рдкреНрдпреБрд▓реЗрдЯрд░ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдСрдкрд░реЗрд╢рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рдШрди рд╕рдВрдкрддреНрддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐
рдореВрд╡ рд╡рд░реНрдЯреЗрдХреНрд╕ рдкреЙрдЗрдВрдЯ рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рд▓реА рдХрдИ рдиреАрд▓реЗ рдбреЙрдЯреНрд╕ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред рдпрд╣рд╛рдБ рд╡реЗ рд╣реИрдВ - рдШрди рдЬрд╛рд▓ рдХреЗ рд╕рдмрд╕реЗ рдКрдкрд░! рдЕрдиреНрдп 3D рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВред
рдПрдХ рд╣реА рд╢реАрд░реНрд╖ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
рдЪрд▓реЛ рдЬрд╛рд▓ рдХреЛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЪрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рдПрдХрд▓ рд╢реАрд░реНрд╖ рдкрд░ рдЬрд╛рдирд╛ред
MeshInspector.cs рдкрд░ рдЬрд╛рдПрдВред
ShowPoint()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░,
//drag
рдЯрд┐рдкреНрдкрдгреА рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдФрд░
if
рдмреНрд▓реЙрдХ рдХреЗ рд╕рдорд╛рдкрди рдХреЛрд╖реНрдардХ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
if (GUI.changed)
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
GUI.changed
рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реЙрдк рдСрдкрд░реЗрд╢рди рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП Handles.FreeMoveHandle()
рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредmesh.DoAction()
рдХрд░рдиреЗ mesh.DoAction()
рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП, mesh.DoAction()
рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдиреЗ рдЗрдВрдбреЗрдХреНрд╕ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдорд╛рдиреЛрдВ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреЗ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдорд╛рди рд╡рд┐рд╢реНрд╡ рд╕реНрдерд╛рди рдореЗрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ InverseTransformPoint()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░
MeshStudy.cs рдкрд░
рдЬрд╛рдПрдВ ред
DoAction()
, рдХреЛрд╖реНрдардХ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
PullOneVertex(index, localPos);
рдлрд┐рд░
PullOneVertex()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
vertices[index] = newPos;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рд╣рдо рдорд╛рди
newPos
рд╕рд╛рде рд▓рдХреНрд╖реНрдп рд╢реАрд░реНрд╖ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╣реИрдВред - рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рд╢реАрд░реНрд╖ рдорд╛рдиреЛрдВ рдХреЛ
cMesh.vertices
рд╡рд╛рдкрд╕ cMesh.vertices
ред RecalculateNormals()
рдореЗрд╖ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд▓ рдХреЛ рд▓рд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред рдХреНрдпреВрдм рдкрд░ рдЕрдВрдХ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ; рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЯреВрдЯреА рд╣реБрдИ рдЬрд╛рд▓реА рджрд┐рдЦрд╛рдИ рджреА?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдХреЛрдиреЗ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╢реЗрд╖ рдХреЛрдиреЗ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдореЗрд╖ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗред
рд╕рднреА рд╕рдорд╛рди рдХреЛрдиреЗ рдвреВрдБрдврдирд╛
рдиреЗрддреНрд░рд╣реАрди, рдПрдХ рдШрди рдЬрд╛рд▓ рдореЗрдВ рдЖрда рдХреЛрдиреЗ, рдЫрд╣ рдкрдХреНрд╖ рдФрд░ 12 рддреНрд░рд┐рдХреЛрдг рд╣реЛрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реИред
MeshStudy.cs рдЦреЛрд▓реЗрдВ,
Start()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░
рд╡рд░реНрдЯрд┐рд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдвреВрдВрдвреЗрдВред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВрдЧреЗ:
[HideInInspector] public Vector3[] vertices;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
[HideInInspector]
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рд╡рд┐рдВрдбреЛ рд╕реЗ рдПрдХ рд╕рд╛рдЭрд╛ рдЪрд░ рдЫреБрдкрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ:
рдзреНрдпрд╛рди рджреЗрдВ: рд╡рд░реНрдЯреЗрдХреНрд╕ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ 3 рдбреА рдореЗрд╖ рдХреЗ рд╕рд╛рде [HideInInspector]
рдорджрдж рдорд┐рд▓рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рд╣рдЬрд╛рд░реЛрдВ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рд╕рд░рдгреА рдорд╛рди рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдкрд░ рдПрдХрддрд╛ рдХрд╛ рдирд┐рд╖реЗрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдУред рдЕрдм,
рдореЗрд╖ рдЕрдзреНрдпрдпрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШрдЯрдХ рдХреЗ рддрд╣рдд,
рдХреЛрдиреЗ рдХреА рд╕рдВрдкрддреНрддрд┐ рджрд┐рдЦрд╛рдИ рджреА рд╣реИред рдЗрд╕рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рддреАрд░ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ; рддреЛ рдЖрдк
Vector3
рддрддреНрд╡реЛрдВ
Vector3
рд╕рд░рдгреА рдХрд╛
Vector3
рд╣реИрдВред
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ 24 рд╣реИ, рдЕрд░реНрдерд╛рддреН, рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рд╡рд╛рд▓реЗ рдХреЛрдиреЗ рд╣реИрдВ! рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ,
[HideInInspector]
ред
24 рдХреЛрдиреЗ рдХреНрдпреЛрдВ рд╣реИрдВ?рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрдИ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрддреНрддрд░ рдпрд╣ рд╣реИ: рдХреНрдпреВрдм рдХреЗ рдЫрд╣ рдкрдХреНрд╖ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдХреНрд╖ рдПрдХ рд╡рд┐рдорд╛рди рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рд░ рдХреЛрдиреЗ рд╕реЗ рдмрдирд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЧрдгрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: 6 x 4 = 24 рдХреЛрдиреЗред
рдЖрдк рдЕрдиреНрдп рдЙрддреНрддрд░реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдХрд┐ рдХреБрдЫ рдореЗрд╖реЛрдВ рдореЗрдВ рд▓рдВрдмрд╡рдд рд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреАред
MeshStudy.cs рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде
DoAction()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░
рд╕рднреА рдХреЛрдб рдмрджрд▓реЗрдВ:
PullSimilarVertices(index, localPos);
рдЖрдЗрдП
PullSimilarVertices()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
Vector3 targetVertexPos = vertices[index];
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕реЗ
FindRelatedVertices()
рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред - рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ (рдЕрдиреБрд▓рдВрдмреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк) рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╢реАрд░реНрд╖ рдХреЗ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИред
- рд▓реВрдк рдкреВрд░реА рд╕реВрдЪреА рдХрд╛ рдкрддрд╛
newPos
рдФрд░ newPos
рд▓рд┐рдП newPos
рд╕реЗ newPos
рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред cMesh.vertices
рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП vertices
рд╡рд╛рдкрд╕ cMesh.vertices
ред рдлрд┐рд░ рд╣рдо рдирдП рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд╖ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RecalculateNormals()
рдХрд╣рддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред рдХрд┐рд╕реА рднреА рдХреЛрдиреЗ рдХреЛ рдЦреАрдВрдЪреЗрдВ; рдЕрдм рдЬрд╛рд▓реА рдХреЛ рдЕрдкрдирд╛ рдЖрдХрд╛рд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдврд╣рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред
рдЕрдм рдЬрдм рд╣рдордиреЗ рдореЗрд╢ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрджрдо рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рджреГрд╢реНрдп рдХреЛ рдмрдЪрд╛рдПрдВ рдФрд░ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВред
рдореЗрд╖ рдХрд╛ рд╣реЗрд░рдлреЗрд░
рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдореЗрд╖реЛрдВ рдХреЗ рд╣реЗрд░рдлреЗрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВрдЧреЗред рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЗрд╖ рд╣реЗрд░рдлреЗрд░ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдореЗрд╖ рд╢реАрд░реНрд╖реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ред
рдЪрдпрдирд┐рдд рдЕрдиреБрдХреНрд░рдорд┐рдд рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛
рдЖрдЗрдП рдЙрди рд▓рдВрдмреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред
рджреГрд╢реНрдп
02 рдЦреЛрд▓реЗрдВ рджреГрд╢реНрдп рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ
рд╣рд╛рд░реНрдЯ рдореЗрд╖ рдмрдирд╛рдПрдБ ред рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдк рдПрдХ рд▓рд╛рд▓ рдХреНрд╖реЗрддреНрд░ рджреЗрдЦреЗрдВрдЧреЗред
рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ
рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдкрд░ рдЬрд╛рдПрдВ ред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐
рд╣рд╛рд░реНрдЯ рдореЗрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШрдЯрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рдЕрдм рд╣рдореЗрдВ рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ рдореЗрд╖ рдХреЗ рдХреЛрдиреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдВрдкрд╛рджрдХ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░
HeartMeshInspector.cs рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
ShowHandle()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ,
if
рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
Handles.color = Color.blue; if (Handles.Button(point, handleRotation, mesh.pickSize, mesh.pickSize, Handles.DotHandleCap))
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ
Handles.Button
рд░реВрдк рдореЗрдВ рдореЗрд╖ рдХреЗ рдХреЛрдиреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред Handles.Button
ред - рдЬрдм рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЪрдпрдирд┐рдд рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рджрдмрд╛рдпрд╛,
mesh.selectedIndices
ред
OnInspectorGUI()
, рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
if (GUILayout.Button("Clear Selected Vertices")) { mesh.ClearAllData(); }
рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛: рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо
mesh.ClearAllData()
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХреЛ рдПрдХ рд░реАрд╕реЗрдЯ рдмрдЯрди рдХреИрд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
mesh.ClearAllData()
ред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░
рд▓рд┐рдкрд┐рдпреЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ
HeartMesh.cs рдЦреЛрд▓реЗрдВред
ClearAllData()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
selectedIndices = new List<int>(); targetIndex = 0; targetVertex = Vector3.zero;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рдХреЛрдб
targetIndex
рдФрд░
targetIndex
рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИред рдпрд╣
targetVertex
рднреА рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред
рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░
рд╣рд╛рд░реНрдЯрдореЗрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдШрдЯрдХ рдХреЗ рд▓рд┐рдП
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдкрд░
рдЬрд╛рдПрдВ ред рдЗрд╕рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдРрд░реЛ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ
рдЪрдпрдирд┐рдд рдЗрдВрдбрд┐рд╕реЗрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рд╣рдореЗрдВ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдЗрд╕рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдЪреЗрдХрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╕рдВрдкрд╛рджрди рдореЛрдб рд╕рдХреНрд╖рдо
рдХрд░реЗрдВ ред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдЬрд╛рд▓реА рдХреЗ рдХреЛрдиреЗ рдХреЛ рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪрдпрдирд┐рдд рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдореЗрдВ рдиреАрд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ,
рдХреНрд▓рд┐рдпрд░ рдЪрдпрдирд┐рдд рд╡рд░реНрдЯрд┐рд╕ рдмрдЯрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред
рдиреЛрдЯ: рд╕рдВрд╢реЛрдзрд┐рдд рдХрд╕реНрдЯрдо
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ , рд╣рдорд╛рд░реЗ рдкрд╛рд╕
рд╢реЛ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рд╣реИрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдореИрдиреНрдпреВрд▓реЗрдЯрд░ рдХреЛ рджрд┐рдЦрд╛рдиреЗ / рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдореИрдирд┐рдкреБрд▓реЗрдЯрд░ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВ рддреЛ рдШрдмрд░рд╛рдПрдБ рдирд╣реАрдВ! рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдВред
рдПрдХ рдЧреЛрд▓реЗ рдХреЛ рджрд┐рд▓ рдореЗрдВ рдмрджрд▓рдирд╛
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЬрд╛рд▓реА рдХреЗ рд╕рд┐рд░реЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:
- рд╡рд░реНрддрдорд╛рди рдореЗрд╖ рдХреЛрдиреЗ (рдПрдиреАрдореЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ)
mVertices
рдкрд░ mVertices
ред mVertices
рдЧрдгрдирд╛ mVertices
рд╣реИрдВ рдФрд░ mVertices
рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ mVertices
ред- рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдмрджрд▓рддреЗ рд╕рдордп
mVertices
рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдореЗрд╖ рдХреЛрдиреЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХрддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ mVertices
рдЧрдгрдирд╛ рдХрд░реЗрдВред
OpenMesh.cs рдЦреЛрд▓реЗрдВ рдФрд░
Start()
рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рдореНрди рдЪрд░:
public float radiusofeffect = 0.3f;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рд▓рдХреНрд╖реНрдп рд╢реАрд░реНрд╖ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ред
- рдмрд▓ рдЦреАрдВрдЪреЗрдВред
- рдПрдиреАрдореЗрд╢рди рдХреА рдЕрд╡рдзрд┐ред
selectedIndices
рд╕реВрдЪреА рд╕реВрдЪреА рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕реВрдЪрдХрд╛рдВрдХред
if
рдмреНрд▓реЙрдХ рд╕реЗ рдкрд╣рд▓реЗ
Init()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
currentIndex = 0;
рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛: рдЦреЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ,
currentIndex
рдХреЛ 0 рдкрд░
currentIndex
рдЬрд╛рддрд╛ рд╣реИ,
selectedIndices
рд╕реВрдЪреА рд╕реВрдЪреА рдХрд╛ рдкрд╣рд▓рд╛ рд╕реВрдЪрдХрд╛рдВрдХред
рдЙрд╕реА
Init()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ,
else
рдмреНрд▓реЙрдХ рдХреЗ рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
StartDisplacement();
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
StartDisplacement()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ
isEditMode
рдпрджрд┐
isEditMode
рдЧрд▓рдд рд╣реИред
StartDisplacement()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
targetVertex = oVertices[selectedIndices[currentIndex]];
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рдПрдиреАрдореЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
targetVertex
рдЪреБрдиреЗрдВред - рдкреНрд░рд╛рд░рдВрдн рд╕рдордп рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░
isAnimate
рдХреЗ рдорд╛рди рдХреЛ рд╕рд╣реА рдореЗрдВ рдмрджрд▓реЗрдВред
StartDisplacement()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рдж,
StartDisplacement()
рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде
FixedUpdate()
рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ:
void FixedUpdate()
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
FixedUpdate()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдПрдлрдкреАрдПрд╕ рд▓реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред- рдпрджрд┐ рдХреЛрдИ
isAnimate
рдЧрд▓рдд рд╣реИ, рддреЛ рдирд┐рдореНрди рдХреЛрдб рдЫреЛрдбрд╝реЗрдВред runtime
рдПрдирд┐рдореЗрд╢рди рдмрджрд▓реЗрдВред- рдпрджрд┐
runtime
duration
рднреАрддрд░ рд╣реИ, рддреЛ рд╣рдо targetVertex
рдФрд░ targetVertex
DisplaceVertices()
рдХреЗ рд╡рд┐рд╢реНрд╡ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, pullvalue
рдФрд░ radiusofeffect
рд╕рд╛рде рд▓рдХреНрд╖реНрдп рд╢реАрд░реНрд╖ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВред - рдЕрдиреНрдпрдерд╛, рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред
currentIndex
рдПрдХ рдЬреЛрдбрд╝реЗрдВред - рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛
currentIndex
selectedIndices
currentIndex
ред StartDisplacement()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреА рдореЗрдВ рдЕрдЧрд▓реЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬрд╛рдПрдВред - рдЕрдиреНрдпрдерд╛, рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдореЗрдВ,
oMesh
рдбреЗрдЯрд╛ рдХреЛ рд╡рд░реНрддрдорд╛рди рдЬрд╛рд▓ рдореЗрдВ рдмрджрд▓ рджреЗрдВ рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдХреЛ isAnimate
ред
DisplaceVertices()
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
Vector3 currentVertexPos = Vector3.zero; float sqrRadius = radius * radius;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рддреНрд░рд┐рдЬреНрдпрд╛ рдХрд╛ рд╡рд░реНрдЧред
- рд╣рдо рдЬрд╛рд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рддреЗ рд╣реИрдВред
currentVertexPos
рдФрд░ sqrMagnitude
рдмреАрдЪ currentVertexPos
sqrMagnitude
ред- рдпрджрд┐
sqrMagnitude
рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдЕрдЧрд▓реЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬрд╛рдПрдВред - рдЕрдиреНрдпрдерд╛,
falloff
рдорд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЬрд╛рд░реА рд░рдЦреЗрдВ, рдЬреЛ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рдХреЗрдВрджреНрд░ рдмрд┐рдВрджреБ рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдХреА distance
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред - рдирдИ
Vector3
рд╕реНрдерд┐рддрд┐ Vector3
рдФрд░ рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдкрд░ рдЗрд╕рдХреЗ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред - рдЬрдм рдЖрдк рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо
mVertices
рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд mVertices
рдорд╛рдиреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХрддрд╛ рдХреЛ mVertices
рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред
рдлрд╝реЙрд▓рдСрдлрд╝ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреА рдХрд╛ рд╕реНрд░реЛрдд
рдореВрд▓ рдлреЙрд░реНрдореВрд▓рд╛ рдкреНрд░реЛрд╕реАрдбреНрдпреВрд░рд▓ рдПрдЧреНрдЬрд╛рдо рдПрд╕реЗрдЯ рдкреИрдХреЗрдЬ рдлрд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпреВрдирд┐рдЯреА рдПрд╕реЗрдЯ рд╕реНрдЯреЛрд░ рд╕реЗ рдореБрдлреНрдд рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред
рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ,
рд╣рд╛рд░реНрдЯрдореЗрд╢ рдШрдЯрдХ рдкрд░ рдЬрд╛рдПрдВ рдФрд░
рдЪрдпрдирд┐рдд рд╕реВрдЪрдХ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдХреБрдЫ рдХреЛрдиреЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЕрдХреНрд╖рдо
рдореЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
Play рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд░реЗрдбрд┐рдпрд╕реЛрдлреЗрдХреНрдЯ ,
рдкреБрд▓рд╡рд▓реНрдпреВ рдФрд░
рдЕрд╡рдзрд┐ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рдЬрдм рдЖрдк рддреИрдпрд╛рд░ рд╣реЛрдВ, рддреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓реЗрдВред
Play рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдХреНрд╖реЗрддреНрд░ рджрд┐рд▓ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ?
рдмрдзрд╛рдИ! рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдлрд╝реИрдм рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд╖ рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдореЗрд╖ рдХреЛ рд╕рд╣реЗрдЬрдирд╛
рдкреНрд▓реЗ рдореЛрдб рдореЗрдВ рдПрдХ рджрд┐рд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЬрд╛рд▓ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдкреНрд░реАрдлреИрдм рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдмрдЪреНрдЪрд╛ рдПрдХ 3 рдбреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдореЗрд╖ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдЧрд╛ред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ,
Prefabs рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
CustomHeart рдЦреЛрдЬреЗрдВред рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдФрд░
рдмрд╛рд▓ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрд░ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЕрдм рдЖрдкрдХреЛ
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдХ рдХреНрд╖реЗрддреНрд░ рд╡рд╕реНрддреБ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдпрд╣ рдкреНрд░реАрдлрд╝реИрдм рд╣реИ рдЬреЛ рдирдП рдЬрд╛рд▓ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред
OpenMeshInspector.cs рдЦреЛрд▓реЗрдВред рдмрдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ
OnInspectorGUI()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
if (!mesh.isEditMode && mesh.isMeshReady) { string path = "Assets/Prefabs/CustomHeart.prefab";
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- CustomHeart prefab рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП
path
рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред - CustomHeart prefab рд╕реЗ рджреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдПрдХ рдЧреЗрдордСрдмрдЬреЗрдХреНрдЯ (
pfObj
) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рджреВрд╕рд░рд╛ рд▓рд┐рдВрдХ ( pfRef
) рдХреЗ рд░реВрдк рдореЗрдВред - CustomHeart рд╕реЗ pfMesh рдореЗрд╖
pfMesh
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдЬрд╛рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИред - рдирдП рдЬрд╛рд▓ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде
pfMesh
рдХреЛ pfMesh
рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ CustomHeart рдХреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
gameObj
рдореЗрдВ gameObj
рдПрдХ рдореЗрд╖ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рднрд░рддрд╛ рд╣реИред- рдкреВрд░реНрд╡-рдореМрдЬреВрджрд╛ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рдорд┐рд▓рд╛рди
gameObj
рдЧреЗрдордСрдмреНрдЬ рдХреЗ рд╕рд╛рде gameObj
рдЬрдЧрд╣ред - рддреБрд░рдиреНрдд рдЦреЗрд▓ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░
HeartMesh.cs рдкрд░
рдЬрд╛рдПрдВ ред рд╕рд╛рдорд╛рдиреНрдп
SaveMesh()
рд╡рд┐рдзрд┐ рдореЗрдВ,
nMesh
рдЖрд╡реГрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж
nMesh
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
nMesh.name = "HeartMesh"; nMesh.vertices = oMesh.vertices; nMesh.triangles = oMesh.triangles; nMesh.normals = oMesh.normals;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рджрд┐рд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЬрд╛рд▓реА рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрд╖ рд╕рдВрдкрддреНрддрд┐ рджреЗрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред
Play рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдПрдиреАрдореЗрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж,
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ
рд╕реЗрд╡ рдореЗрд╢ рдмрдЯрди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдирдП рдЬрд╛рд▓ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд░реЛрдХреЗрдВред
Prefabs рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ CustomHeart
prefab рдХреЛ рджреЗрдЦреЗрдВ ред рдЖрдкрдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдм CustomHeart
prefab рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рджрд┐рд▓ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдореЗрд╖ рд╣реИред
рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо!рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛
рдкрд┐рдЫрд▓реЗ рджреГрд╢реНрдп рдореЗрдВ,
DisplaceVertices()
рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдбреНрд░реИрдЧ рдлреЛрд░реНрд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд▓рдСрдлрд╝ рдлреЙрд░реНрдореВрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред "рдлреЙрд▓ рдСрдл" рдХреА рдмрд╛рдд, рдЬрд┐рд╕ рдкрд░ рдбреНрд░реИрдЧ рдлреЛрд░реНрд╕ рдХрдо рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдлреЙрд▓рдСрдл рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ: рд░реИрдЦрд┐рдХ, рдЧрд╛рдКрд╕реА рдпрд╛ рд╕реБрдИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдЬрд╛рд▓ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдПрдХ рдФрд░ рддрд░реАрдХреЗ рдХреЛ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВрдЧреЗ: рджрд┐рдП рдЧрдП рд╡рдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред рдпрд╣ рдирд┐рдпрдо рд▓реЗрддреЗ рд╣реБрдП рдХрд┐ рдЧрддрд┐ рд╕рдордп (d = (v / t)) рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рджреВрд░реА рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рд╣рдо рд╡реЗрдХреНрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдордп рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдЗрд╕рдХреА рджреВрд░реА рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдПред
рд╡рдХреНрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдХрд░рдВрдЯ рд╕реАрди рдХреЛ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░
03 рдХреЛ
рдлреЛрд░реНрд╕реЗрдЬ рдХреЛ
рдлреЛрд▓реНрдб рдХрд░реЗрдВ ред рдЖрдкрдХреЛ CustomHeart
prefab рдХрд╛ рдПрдХ
рдкрджрд╛рдиреБрдХреНрд░рдо рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдФрд░
рдмрд╛рд▓ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рддреАрд░ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рдЗрд╕рдХреЗ рдЧреБрдг рджреЗрдЦреЗрдВред
рдЖрдк рд╣рд╛рд░реНрдЯ рдореЗрд╢ рдПрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдореЗрд╢ рдлрд┐рд▓реНрдЯрд░ рдШрдЯрдХ рджреЗрдЦреЗрдВрдЧреЗ ред рдПрдХ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдЪреНрдЪреЗ рдХреЛ рдПрдХ рдХрд╕реНрдЯрдо рд╣рд╛рд░реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ ред рдЕрдм рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рд╛рд░реНрдЯрдореЗрд╢ рд╕реЗ рдХреНрд▓реЛрди рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП редрдЕрдЧрд▓рд╛, Scripts рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ CustomHeart.cs рдЦреЛрд▓реЗрдВ ред рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:Start()
public enum CurveType { Curve1, Curve2 } public CurveType curveType; Curve curve;
рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛: рдпрд╣рд╛рдВ рдирд╛рдо рдХреЗ рддрд╣рдд рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдиреБрдо рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ CurveType
, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рдЬрд╛рдПрдВ CurveType1()
рдФрд░ рдЬреЛрдбрд╝реЗрдВ: Vector3[] curvepoints = new Vector3[3];
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:- рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рдХреНрд░ рдореЗрдВ рддреАрди рдмрд┐рдВрджреБ рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рд╡рдХреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред
- рд╣рдо рдорджрдж рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рд╡рдХреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВ
Curve()
рдФрд░ рдЗрд╕рдХреЗ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ curve
ред рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рд╡рдХреНрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
CurveType2()
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЬреЛрдбрд╝реЗрдВ: Vector3[] curvepoints = new Vector3[3];
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:- рджреВрд╕рд░реЗ рд╡рдХреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред
- рд╣рдо
Curve()
рдЗрд╕рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рд╡рдХреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ curve
ред рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рд╡рдХреНрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмреА StartDisplacement()
, рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ: if (curveType == CurveType.Curve1) { CurveType1(); } else if (curveType == CurveType.Curve2) { CurveType2(); }
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рдпрд╣рд╛рдВ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рд╡рд┐рдХрд▓реНрдк рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ curveType
рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ curve
редB DisplaceVertices()
, for
рдХреЛрд╖реНрдардХ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реВрдк рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдЕрдВрджрд░ , рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ: float increment = curve.GetPoint(distance).y * force;
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:- рд╣рдо рджрд┐рдП рдЧрдП рдореЛрдбрд╝ рдкрд░ рд╡рдХреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
distance
рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдореВрд▓реНрдп y
рдХреЛ рдЧреБрдгрд╛ force
рдХрд░рддреЗ рд╣реИрдВ increment
ред Vector3
рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдХреА рдирдИ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреЗ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдПрдВ ред
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдПрдХрддрд╛ рдкрд░ рд▓реМрдЯреЗрдВред рдШрдЯрдХ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ CustomHeart рдЦреЗрд▓ рд╡рд╕реНрддреБ рдмрд╛рд▓ ред рдЖрдкрдХреЛ рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА рдЬрд╣рд╛рдВ рдЖрдк рд╡рдХреНрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдкреНрд░рдХрд╛рд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╕реЗ, рдХреЛрдиреЗ рдХреА рд╕реВрдЪреА рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Add Indices рдпрд╛ Remove Indices рдЪреБрдиреЗрдВ редрд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рди рджрд░реНрдЬ рдХрд░реЗрдВ:рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд╡рдХреНрд░ рдкреНрд░рдХрд╛рд░ , рдХрд╛ рдЪрдпрди Curve1 , рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд▓реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХреЛрдИ рднреА рдФрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдкреНрд▓реЗ ред рдЖрдкрдХреЛ рдкреИрдЯрд░реНрди рдореЗрдВ рдЬрд╛рд▓реА рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЙрдбрд▓ рдХреЛ рд╕рд╛рдЗрдб рд╡реНрдпреВ рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓ рдХрд░реЗрдВ рдФрд░ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд░реНрд╡реНрд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЪрдпрдирд┐рдд рдХрд░реНрд╡ рдЯрд╛рдЗрдк рдореЗрд╖ рдСрдлрд╕реЗрдЯ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИредрд╡рд╣ рд╕рдм рд╣реИ!
рдЖрдк рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдХреЛрдиреЗ , рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧред рд▓реЗрдХрд┐рди рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЕрдиреНрдп рдХрд╛рд░рдХ рд╣реИрдВ рдЬреЛ рдореЗрд╖ рдХреЗ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН:- рддреНрд░рд┐рдЬреНрдпрд╛ рдХрд╛ рдорд╛рдиред
- рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЛрдиреЗ рдХрд╛ рд╡рд┐рддрд░рдгред
- рдЪрдпрдирд┐рдд рдХреЛрдиреЗ рдХреА рдкреИрдЯрд░реНрди рд╕реНрдерд┐рддрд┐ред
- рдСрдлрд╝рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЪреБрдиреА рдЧрдИ рд╡рд┐рдзрд┐ред
рдЖрдЧреЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ?
рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдлрд╛рдЗрд▓реЗрдВ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╣реИрдВ редрд╡рд╣рд╛рдВ рд░реБрдХрдирд╛ рдордд! рдпреВрдирд┐рдЯреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рднреВрд▓рднреБрд▓реИрдпрд╛ рдкреАрдврд╝реА рдХреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ редрдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж рдореИрдВ рд╡реНрдпрдХреНрдд рдЬреИрд╕реНрдкрд░ рдлрд╝реНрд▓рд┐рдХ рдХреА рдмрд┐рд▓реНрд▓реА рдХреЗ рд╕рдорд╛рди рдХреЛрдбрд┐рдВрдЧ рдЙрдирдХреА рдЙрддреНрдХреГрд╖реНрдЯ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдорджрдж рдХреА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдореЛ рдЗрдХрдЯреНрдард╛ред