рдПрдХрддрд╛ рдореЗрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рд╣реБрдХ рдмрдирд╛рдирд╛ред рднрд╛рдЧ реи

рдЫрд╡рд┐

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

рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ , рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рд╕реНрд╕реА рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рд▓реНрд▓реА рд╣реБрдХ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рд░рд╕реНрд╕реА рд╕реНрддрд░ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдХрд╛рдо рдкрд░ рд▓рдЧрдирд╛


рдпреВрдирд┐рдЯреА рдореЗрдВ рдкрд╣рд▓реЗ рднрд╛рдЧ рд╕реЗ рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВ рдпрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдлреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдлрд┐рд░ 2DGrapplingHook-Part2-Starter рдЦреЛрд▓реЗрдВред рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреА рддрд░рд╣, рд╣рдо рдПрдХрддрд╛ рд╕рдВрд╕реНрдХрд░рдг 2017.1 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдкрд░рд┐рджреГрд╢реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЧреЗрдо рджреГрд╢реНрдп рдЦреЛрд▓реЗрдВред


рдЧреЗрдо рджреГрд╢реНрдп рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдкрд╛рддреНрд░ рдХреЗ рдКрдкрд░ рдкрддреНрдерд░реЛрдВ рдкрд░ рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╣реБрдХ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рд░рд╕реНрд╕реА рдХреЛ рдкрддреНрдерд░ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдВрдЧ рдХрд░реЗрдВред

рдЬрдм рдЖрдк рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрддреНрдерд░ рдХреЗ рдмрд┐рдВрджреБ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд░рд╕реНрд╕реА рдХреЛ рдШреБрдорд╛рдпрд╛ рдЬрд╛рддрд╛ рдерд╛, рд╡реЗ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВред


рдЙрд╕ рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдЬрд┐рд╕ рдкрд░ рд░рд╕реНрд╕реА рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд░рд╕реНрд╕реА рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯрддреА рд╣реИред

рдпрджрд┐ рд╕реНрд▓рдЧ, рдЙрд╕рдХреЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рдПрдХ рдкрддреНрдерд░ рд╕реЗ рдЪрд┐рдкрдХреА рд╣реБрдИ рд╣реИ, рджрд╛рдИрдВ рдУрд░ рдЭреВрд▓рддреА рд╣реИ, рддреЛ рд░рд╕реНрд╕реА рдЙрд╕ рджрд╣рд▓реАрдЬ рдХреЗ рдмрд╛рдж рдЭреБрдХ рдЬрд╛рдПрдЧреА рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рд░рд┐рдм рдХреЗ рд╕рд╛рде 180 рдбрд┐рдЧреНрд░реА рдХреЗ рдХреЛрдг рдмрд┐рдВрджреБ рдХреЛ рдкрд╛рд░ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕реНрд▓рдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рд╣рд░реЗ рдмрд┐рдВрджреБ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


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


рдЕрд╕рддреНрдп рдХрд╛ рддрд░реНрдХ


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

рдпрд╣ рдХрд╛рд░реНрдп рдереЛрдбрд╝рд╛ рдбрд░рд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЧрдгрд┐рдд рд╕рдмрд╕реЗ рдмрд╣рд╛рджреБрд░ рдореЗрдВ рднреА рдбрд░рд╛рд╡рдиреА рдФрд░ рдирд┐рд░рд╛рд╢рд╛ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХрддрд╛ рдореЗрдВ рдХреБрдЫ рдорд╣рд╛рди рдЧрдгрд┐рдд рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдИрдбреАрдИ рдореЗрдВ рд░реЛрдкрд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╣реИ HandleRopeUnwrap() ред

 private void HandleRopeUnwrap() { } 

Update() рдЬрд╛рдПрдВ Update() рдФрд░ рд╣рдорд╛рд░реЗ рдирдП рддрд░реАрдХреЗ рдкрд░ рдХреЙрд▓ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред

 HandleRopeUnwrap(); 

рдЬрдмрдХрд┐ HandleRopeUnwrap() рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ HandleRopeUnwrap() рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рддрд░реНрдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рд╕реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╣рдордиреЗ рд░реЛрдк рд░реИрдкрд┐рдВрдЧ рдкреЛрдЬреАрд╢рди рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ ropePositions рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ List<Vector2> рд╕рдВрдЧреНрд░рд╣ рд╣реИред рд╣рд░ рдмрд╛рд░ рдЬрдм рдПрдХ рд░рд╕реНрд╕реА рдПрдХ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЗрд╕ рд▓рдкреЗрдЯ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо HandleRopeUnwrap() рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рд╣реИред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬрдм рд╕реНрд▓рдЧ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдкрд░ рдЭреБрдХрд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд░рд╕реНрд╕реА рдЕрднреА рддрдХ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯреА рдирд╣реАрдВ рдЧрдИ рд╣реИ, рддреЛ ropePositions рд╡реЗ рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рд╣реЛрдЧреА, рдФрд░ рд╣рдо ropePositions рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рдореВрд▓реНрдпрд╡рд╛рди CPU рдЪрдХреНрд░реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рд░рд▓ return рдХреЛ HandleRopeUnwrap() рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ HandleRopeUnwrap() , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХрдИ рдмрд╛рд░ Update() рд╕реЗ рдХреЙрд▓ рдХреА рдЬрд╛рддреА рд╣реИред

 if (ropePositions.Count <= 1) { return; } 

рдирдИ рдЪрд░ рдЬреЛрдбрд╝рдирд╛


рдЗрд╕ рдирдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд, рд╣рдо рдХреБрдЫ рдЖрдпрд╛рдореЛрдВ рдФрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдгреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдЕрдкреНрд░рд╕реНрддреБрдд рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдирд┐рдореНрди рдХреЛрдб рдХреЛ HandleRopeUnwrap() :

 // Hinge =       // Anchor =     Hinge // Hinge Angle =   anchor  hinge // Player Angle =   anchor  player // 1 var anchorIndex = ropePositions.Count - 2; // 2 var hingeIndex = ropePositions.Count - 1; // 3 var anchorPosition = ropePositions[anchorIndex]; // 4 var hingePosition = ropePositions[hingeIndex]; // 5 var hingeDir = hingePosition - anchorPosition; // 6 var hingeAngle = Vector2.Angle(anchorPosition, hingeDir); // 7 var playerDir = playerPosition - anchorPosition; // 8 var playerAngle = Vector2.Angle(anchorPosition, playerDir); 

рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЪрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╕рдордЭрд╛рдКрдВрдЧрд╛, рд╕рд╛рде рд╣реА рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЪрд┐рддреНрд░рдг рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдЬреЛ рдЙрдирдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

  1. anchorIndex ropePositions рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрдВрдд рд╕реЗ рджреЛ рдкрджреЛрдВ рдкрд░ рд╣реИред рд╣рдо рдЗрд╕реЗ рд╕реНрд▓рдЧ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд░рд╕реНрд╕реА рдкрд░ рджреЛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рд╕рддрд╣ рд╕реЗ рд╣реБрдХ рдХреЗ рд▓рдЧрд╛рд╡ рдХрд╛ рдпрд╣ рдкрд╣рд▓рд╛ рдмрд┐рдВрджреБ рд╣реИред ropePositions рд╕рдВрдЧреНрд░рд╣ ropePositions рдирдП рд░реИрдкрд┐рдВрдЧ рдкреЙрдЗрдВрдЯреНрд╕ рд╕реЗ рднрд░рддреЗ рд╕рдордп, рдпрд╣ рдкреЙрдЗрдВрдЯ рд╣рдореЗрд╢рд╛ рд╕реНрд▓рдЧ рд╕реЗ рджреЛ рдкреЛрдЬрд╝рд┐рд╢рди рдХреА рджреВрд░реА рдкрд░ рд░реИрдкрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред
  2. hingeIndex рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдХрд╛рдЬ рдХреЗ рдмрд┐рдВрджреБ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ; рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╕реНрд╕реА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрд▓рдЧ рд╕реЗ рд░рд╕реНрд╕реА рдХреЗ рдЕрдВрдд рдХреЗ рдХрд░реАрдм рдмрд┐рдВрджреБ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд▓рдкреЗрдЯ рд░рд╣реА рд╣реИред рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реНрд▓рдЧ рд╕реЗ рдПрдХ рд╕реНрдерд╛рди рдХреА рджреВрд░реА рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо ropePositions.Count - 1 рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
  3. anchorIndex рдЧрдгрдирд╛ anchorIndex рдХреЛ ropePositions рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЬрдЧрд╣ anchorIndex рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд░рд▓ рд╡реЗрдХреНрдЯрд░ 2 рдорд╛рди рд╣реИред
  4. hingePosition ropePositions рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ hingeIndex рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдХреЗ рдЧрдгрдирд╛ hingePosition рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд░рд▓ рд╡реЗрдХреНрдЯрд░ 2 рдорд╛рди рд╣реИред
  5. hingeDir рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ рдЬреЛ hingePosition рд╕реЗ hingePosition рддрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИред рдХреЛрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкреНрд░рдпреЛрдЧ рдирд┐рдореНрди рдЪрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  6. hingeAngle - рдЙрдкрдпреЛрдЧреА рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди Vector2.Angle() рдХрд╛ рдЙрдкрдпреЛрдЧ Vector2.Angle() рдмрд┐рдВрджреБ рдХреЗ рдмреАрдЪ рдХреЗ рдХреЛрдг рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  7. playerDir рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ рдЬреЛ playerDir рд╕реЗ рд╕реНрд▓рдЧ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдкреНрд▓реЗрдпрд░рдкреЛрдЬрд┐рд╢рди)
  8. рдлрд┐рд░, рдПрдВрдХрд░ рдмрд┐рдВрджреБ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА (рд╕реНрд▓рдЧ) рдХреЗ рдмреАрдЪ рдХреЗ рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, playerAngle рдЧрдгрдирд╛ playerAngle рдЬрд╛рддреА рд╣реИред


рдЗрди рд╕рднреА рдЪрд░ рдХреА рдЧрдгрдирд╛ ropePositions рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ ropePositions рдорд╛рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрди рдкрджреЛрдВ рдХреА рддреБрд▓рдирд╛ рдЕрдиреНрдп рдкрджреЛрдВ рдпрд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (рд╕реНрд▓рдЧ) рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рддреА рд╣реИред

рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░ hingeAngle рдФрд░ hingeAngle рд╣реИрдВред

hingeAngle рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рд╕реНрдерд┐рд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ hingeAngle рд╕реЗ рд░рд╕реНрд╕реА рдХреЗ рджреЛ "рд╕рд┐рд▓рд╡рдЯреЛрдВ" рдХреЗ рдмрд┐рдВрджреБ рдХреЗ рдмреАрдЪ рдПрдХ рдирд┐рд░рдВрддрд░ рдХреЛрдг рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди "рд░рд╕реНрд╕реА рдХреЗ рдЧреБрдирд╛" рд╕реНрд▓рдЧ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд░рд╕реНрд╕реА рдХреЗ рдЕрдирдЪрд╛рд╣реЗ рдпрд╛ рдореЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рддрдХ рдирд╣реАрдВ рд╣рд┐рд▓рддрд╛ рд╣реИ рдПрдХ рдирдпрд╛ рдореЛрдбрд╝ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

рдЬрдм рд╕реНрд▓рдЧ playerAngle рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдг рдХреА рддреБрд▓рдирд╛ hingeAngle , рдФрд░ рдпрд╣ рднреА hingeAngle рдХрд┐ рдХреНрдпрд╛ рд╕реНрд▓рдЧ рдЗрд╕ рдХреЛрдиреЗ рдХреЗ рдмрд╛рдПрдБ рдпрд╛ рджрд╛рдПрдБ рд╣реИ, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд▓рдЧ рдХреЗ рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА рдореЛрдбрд╝ рдмрд┐рдВрджреБ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ wrapPointsLookup рдкрджреЛрдВ рдХреЛ wrapPointsLookup рдирд╛рдордХ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ wrapPointsLookup ред рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдореЛрдбрд╝ рдмрд┐рдВрджреБ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдордиреЗ рдЗрд╕реЗ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдФрд░ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ 0 рдХреЗ рд╕рд╛рдеред рд╣рд╛рд▓рд╛рдВрдХрд┐, 0 рдХрд╛ рдпрд╣ рдорд╛рди рдмрд▓реНрдХрд┐ рд░рд╣рд╕реНрдпрдордп рдерд╛, рд╣реИ рдирд╛?

рд╣рдо рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдХреЛрдг рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрд▓рдЧ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ (рд╕реНрд▓реИрдВрдЧ рдХреЗ рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА рдЧреБрдирд╛ рдмрд┐рдВрджреБ) рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред

рдпрджрд┐ рдЖрдк -1 рдХреЗ рдорд╛рди рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрд▓рдЧ ( playerAngle ) рдХрд╛ рдХреЛрдг рд╣рд┐рдВрдЬ ( hingeAngle ) рдХреЗ рдХреЛрдг рд╕реЗ рдХрдо рд╣реИ, рдФрд░ 1 рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде, hingeAngle рдХрд╛ рдХреЛрдг hingeAngle рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╣рдо рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо playerAngle рддреБрд▓рдирд╛ hingeAngle , рддреЛ рд╣рдо рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реНрд▓рдЧ рдиреЗ рдХреЗрд╡рд▓ рд╕реАрдорд╛ рдкрд╛рд░ рдХрд░ рд▓реА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд░рд╕реНрд╕реА рдХреЛ рдЕрдирд╣реБрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдпрджрд┐ рд╕реНрд▓рдЧ рдХреЗ рдХреЛрдг рдХреЛ рдЕрднреА рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╣рд┐рдВрдЬ рдХреЛрдг рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдЗрд╕реЗ рдореЛрдбрд╝ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдПрдХ рдорд╛рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдХреЛрдиреЗ рдХреЗ рджреВрд╕рд░реА рддрд░рдл рдерд╛, рдлрд┐рд░ рдЙрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред !

рд░рд╕реНрд╕реА рдЦреЛрд▓рдирд╛


рдиреЛрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рд╣рдорд╛рд░рд╛ рд╕реНрд▓рдЧ рдЪрдЯреНрдЯрд╛рди рдкрд░ рдЪрдврд╝ рдЧрдпрд╛, рдКрдкрд░ рдХреА рдУрд░ рдПрдХ рд░рд╕реНрд╕реА рд▓рдкреЗрдЯрдХрд░ рдКрдкрд░ рдХреА рддрд░рдл рдЪрдЯреНрдЯрд╛рди рдХреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ред


рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдмрд╕реЗ рдКрдкрд░реА рд╕реНрд╡рд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрд╣рд╛рдВ рд╕реНрд▓рдЧ рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╣реИ, рдЗрд╕рдХреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рдХрдЯрддрдо рдЧреБрдирд╛ рдмрд┐рдВрджреБ (рдПрдХ рд╕рдлреЗрдж рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд) рдХреЛ 1 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде wrapPointsLookup рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдкрд░, рдЬрдм hingeAngle (рджреЛ hingeAngle рд╣рд░реА рд░реЗрдЦрд╛рдУрдВ) рд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрд▓реЗ рддреАрд░ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдореЛрдбрд╝ рдХреЗ рдЕрдВрддрд┐рдо (рд╡рд░реНрддрдорд╛рди) рдорд╛рди 1 рдерд╛, рддреЛ рдореЛрдбрд╝ рдмрд┐рдВрджреБ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд╛рд▓рдХрд░ рдПрдХ рдирдпрд╛ UnwrapRopePosition(anchorIndex, hingeIndex) рд╡рд┐рдзрд┐ UnwrapRopePosition(anchorIndex, hingeIndex) рдЬреЛрдбрд╝реЗрдВ:

 private void UnwrapRopePosition(int anchorIndex, int hingeIndex) { } 

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╛рдкрд╕ HandleRopeUnwrap() ред рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдЪрд░ рдХреЗ рддрд╣рдд, рдирд┐рдореНрди рддрд░реНрдХ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рджреЛ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ: playerAngle hingeAngle рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдФрд░ playerAngle hingeAngle рд╕реЗ рдЕрдзрд┐рдХ hingeAngle :

 if (playerAngle < hingeAngle) { // 1 if (wrapPointsLookup[hingePosition] == 1) { UnwrapRopePosition(anchorIndex, hingeIndex); return; } // 2 wrapPointsLookup[hingePosition] = -1; } else { // 3 if (wrapPointsLookup[hingePosition] == -1) { UnwrapRopePosition(anchorIndex, hingeIndex); return; } // 4 wrapPointsLookup[hingePosition] = 1; } 

рдпрд╣ рдХреЛрдб рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддрд░реНрдХ рдХреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬрдм hingeAngle < hingeAngle ), рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдХреЛ рднреА рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ (рдЬрдм hingeAngle > hingeAngle )ред

  1. рдпрджрд┐ рд╕реНрд▓рдЧ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЧреБрдирд╛ рдмрд┐рдВрджреБ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ 1 рдХрд╛ рдорд╛рди hingeAngle рдЬрд╣рд╛рдВ hingeAngle < hingeAngle , рддреЛ рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдкрд╕реА рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдмрд╛рдХреА рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рди рд╣реЛред
  2. рдЕрдиреНрдпрдерд╛, рдпрджрд┐ рдореЛрдбрд╝ рдмрд┐рдВрджреБ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ 1 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди hingeAngle рд╕реЗ рдХрдо рд╣реИ, рддреЛ -1 рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
  3. рдпрджрд┐ рд╕реНрд▓рдЧ рдХреЗ рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА рдореЛрдбрд╝ рдмрд┐рдВрджреБ -1 рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣реИ рдЬрд╣рд╛рдБ hingeAngle > hingeAngle , рддреЛ рдмрд┐рдВрджреБ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред
  4. рдЕрдиреНрдпрдерд╛, рд╣рдо рд╣рд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореЛрдбрд╝ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ 1 рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдХреЛрдб рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ wrapPointsLookup рдбрд┐рдХреНрд╢рдирд░реА рд╣рдореЗрд╢рд╛ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╡рд░реНрддрдорд╛рди рдмреЗрдВрдб рдкреЙрдЗрдВрдЯ (рд╕реНрд▓рдЧ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм) рдХрд╛ рдорд╛рди рдмреЗрдВрдб рдкреЙрдЗрдВрдЯ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд░реНрддрдорд╛рди рд╕реНрд▓рдЧ рдХреЛрдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдорд╛рди -1 рд╣реИ рдЬрдм рд╕реНрд▓рдЧ рдХреЛрдг рд╣рд┐рдВрдЬ рдХреЛрдг (рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖) рд╕реЗ тАЛтАЛрдХрдо рд╣реИ, рдФрд░ 1 рдЬрдм рд╕реНрд▓рдЧ рдХреЛрдг рдХрд╛рдЬ рдХреЛрдг рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред

рдЕрдм рд╣рдо RopeSystem рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ UnwrapRopePosition() рдХреЛ рдПрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде UnwrapRopePosition() рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╕реАрдзреЗ рдЕрдирдкреНрд▓рдЧрд┐рдВрдЧ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдЧрд╛, рд╕рдВрджрд░реНрдн рд╕реНрдерд┐рддрд┐ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдПрдЧрд╛ рдФрд░ рд░рд╕реНрд╕реА рджреВрд░реА рдХреЗ рдорд╛рди рдХреЛ рдПрдХ рдирдпрд╛ рджреВрд░реА рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░реЗрдЧрд╛ DistanceJoint2Dред рдкрд╣рд▓реЗ рдмрдирд╛рдИ рдЧрдИ рд╡рд┐рдзрд┐ рдбрд┐рд╕реНрдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:

  // 1 var newAnchorPosition = ropePositions[anchorIndex]; wrapPointsLookup.Remove(ropePositions[hingeIndex]); ropePositions.RemoveAt(hingeIndex); // 2 ropeHingeAnchorRb.transform.position = newAnchorPosition; distanceSet = false; // Set new rope distance joint distance for anchor position if not yet set. if (distanceSet) { return; } ropeJoint.distance = Vector2.Distance(transform.position, newAnchorPosition); distanceSet = true; 

  1. рд╡рд░реНрддрдорд╛рди рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ (рд╕реНрд▓рдЧ рд╕реЗ рд░рд╕реНрд╕реА рдХреА рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐) рдХрд╛рдЬ рдХреА рдирдИ рд╕реНрдерд┐рддрд┐ рдмрди рдЬрд╛рддреА рд╣реИ, рдФрд░ рдХрд╛рдЬ рдХреА рдкреБрд░рд╛рдиреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡рд╣ рдЬреЛ рдкрд╣рд▓реЗ рд╕реНрд▓рдЧ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рдерд╛ рдФрд░ рдЬрд┐рд╕реЗ рдЕрдм рд╣рдо "рдЕрдкреНрд░рд╛рдкреНрдп" рдХрд╣рддреЗ рд╣реИрдВ)ред рдЪрд░ newAnchorPosition рд░рд╕реНрд╕реА рдкрджреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдорд╛рди anchorIndex рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯ рдХреА рдЕрджреНрдпрддрди рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  2. рд░рд╕реНрд╕реА-рд╕рдВрдпреБрдХреНрдд RigidBody2D (рдЬрд┐рд╕ рд╕реЗ DistanceJoint2D рд░рд╕реНрд╕реА рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ) рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯ рдХреА рдирдИ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреВрд░реА рдкрд░ рд╕реНрд▓рдЧ рдХреА рд╕реБрдЧрдо рдирд┐рд░рдВрддрд░ рдЧрддрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рджреВрд░реАрдЬреЙрдЗрдВрдЯ 2 рдбреА рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдЗрд╕реЗ рдирдИ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрджрд░реНрдн рдмрди рдЧрдпрд╛ - рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдиреАрдЪреЗ рд░рд╕реНрд╕реА рдХреЗ рдЕрдЧрд▓реЗ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ред
  3. рддрдм рдЖрдкрдХреЛ рдирдП рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдкрд░ рд╕реНрд▓рдЧ рд╕реЗ рджреВрд░реА рдореЗрдВ рддреЗрдЬ рдмрджрд▓рд╛рд╡ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП ,JJoint2D рджреВрд░реА рдорд╛рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ distanceSet рдлреНрд▓реИрдЧ рдХреА рдПрдХ рддреНрд╡рд░рд┐рдд рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рджреВрд░реА рдХреЛ рд╕реНрд▓рдЧ рдФрд░ рдПрдВрдХрд░ рдмрд┐рдВрджреБ рдХреА рдирдИ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рдХреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рджреВрд░реА рдХрд╛ рдорд╛рди рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд╕рдВрдкрд╛рджрдХ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред рдЦреЗрд▓ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рд░рд╕реНрд╕реА рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬрдм рд╕реНрд▓рдЧ рдкреНрд░рддреНрдпреЗрдХ рдореЛрдбрд╝ рдмрд┐рдВрджреБ рдХреА рджрд╣рд▓реАрдЬ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ!


рдпрджреНрдпрдкрд┐ рддрд░реНрдХ рддреИрдпрд╛рд░ рд╣реИ, рд╣рдо playerAngle рдХреЛ hingeAngle ( if (playerAngle < hingeAngle) ) рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ HandleRopeUnwrap() рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рдХреЛрдб рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

 if (!wrapPointsLookup.ContainsKey(hingePosition)) { Debug.LogError("We were not tracking hingePosition (" + hingePosition + ") in the look up dictionary."); return; } 

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реАрдорд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓ рд▓реЗрдВрдЧреЗ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред

рдЖрдЧреЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ?


рдпрд╣рд╛рдБ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЗрд╕ рджреВрд╕рд░реЗ рдФрд░ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдХреА рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

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


рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реА рдПрдХрддрд╛ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдиреЗ рдПрдХ рдХрд┐рддрд╛рдм рд▓рд┐рдЦреА рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЧреЗрдореНрд╕ рджреНрд╡рд╛рд░рд╛ рдпреВрдирд┐рдЯреА рдЧреЗрдореНрд╕ рджреЗрдЦреЗрдВ ред рдпрд╣ рдЦреЗрд▓ рдЖрдкрдХреЛ рд╕рд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЦрд░реЛрдВрдЪ рд╕реЗ рдЪрд╛рд░ рддреИрдпрд╛рд░ рдЦреЗрд▓ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ:

  • рджреЛ-рд╕реНрдЯрд┐рдХ рд╢реВрдЯрд░
  • рдкрд╣рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рд╢реВрдЯрд░
  • рдЯреЙрд╡рд░ рд░рдХреНрд╖рд╛ рдЦреЗрд▓ (рд╡реАрдЖрд░ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде!)
  • 2 рдбреА platformer

рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ, рдореИрдХрдУрдПрд╕, рдЖрдИрдУрдПрд╕ рдФрд░ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдЧреЗрдо рдХреИрд╕реЗ рдмрдирд╛рдПрдВ!

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

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


All Articles