рдХреИрдЯ рд╣реБрдХ рдЦреЗрд▓ рдореЗрдВ рдордЬреЗрджрд╛рд░ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдпрд╛рдВрддреНрд░рд┐рдХреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реНрддрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ, рдПрд░реЗрдирд╛рд╕ рдореЗрдВ рд▓рдбрд╝рдиреЗ рдФрд░ рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд╕рд╛рджрдЧреА рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд░рд╕реНрд╕реА рдкреНрд░рдмрдВрдзрди рдХреА рднреМрддрд┐рдХреА рдФрд░ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ!
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рджреЛ рдЖрдпрд╛рдореА рд╣реБрдХ-рдХреИрдЯ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реАрдЦрддреЗ рд╣реИрдВ:
- рдПрдХ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдПрдБред
- рд░рд╕реНрд╕реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдФрд░ рджреВрд░реА рд╕рдВрдпреБрдХреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рд╣рдо рд░рд╕реНрд╕реА рдХреЛ рдЦреЗрд▓ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯрдирд╛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗред
- рд░рд╕реНрд╕реА рдкрд░ рд╕реНрд╡рд┐рдВрдЧ рдХреЛрдг рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдФрд░ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рддрд╛рдХрдд рдЬреЛрдбрд╝реЗрдВред
рдиреЛрдЯ : рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЙрдиреНрдирдд рдФрд░ рдЕрдиреБрднрд╡реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ, рдирдП рдЧреЗрдо рдСрдмрдЬреЗрдХреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рд╕реА # рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреИрд╕реЗ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдХрддрд╛ рдХреМрд╢рд▓ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХрддрд╛ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдкрд░рд┐рдЪрдп рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рджреЗрдЦреЗрдВ ред рдЪреВрдВрдХрд┐ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ DistanceJoint2D рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХрддрд╛ 2 рдбреА рдореЗрдВ рднреМрддрд┐рдХреА рдЬреЛрдбрд╝реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╛рдо рдкрд░ рд▓рдЧрдирд╛
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП
рдбреНрд░рд╛рдлреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдХрддрд╛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЦреЛрд▓реЗрдВред рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХрддрд╛ 2017.1 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдкрд░реНрджреЗ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ
рдЧреЗрдо рдХрд╛ рджреГрд╢реНрдп рдЦреЛрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдХрд╣рд╛рдВ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ:
рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЦрд┐рд▓рд╛рдбрд╝реА рдЪрд░рд┐рддреНрд░ (рд╕реНрд▓рдЧ) рдФрд░ рдкрддреНрдерд░ рд╣рд╡рд╛ рдореЗрдВ рд▓рдЯрдХреЗ рд╣реБрдП рд╣реИрдВред
GameObject
Player рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ рдХреИрдкреНрд╕реВрд▓ рдХреЛрд▓рд╛рдЗрдбрд░ рдФрд░ рдХрдареЛрд░рддрд╛ рд╣реИрдВ, рдЬреЛ рдЗрд╕реЗ рд╕реНрддрд░ рдкрд░ рднреМрддрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореЛрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ (
PlayerMovement ) рдЪрд░рд┐рддреНрд░ рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЬрдореАрди рдкрд░
рдлрд┐рд╕рд▓рдиреЗ рдФрд░ рд╕рд░рд▓ рдХреВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдкреНрд▓реЗ рдмрдЯрди рджрдмрд╛рдПрдВ, рдФрд░ рдЪрд░рд┐рддреНрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдП рдФрд░
рдбреА рдЗрд╕реЗ рдмрд╛рдПрдВ / рджрд╛рдПрдВ
рдШреБрдорд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рдЖрдк
рд╕реНрдкреЗрд╕рдмрд╛рд░ рдХреЛ
рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреВрджрддрд╛ рд╣реИред рдлрд┐рд╕рд▓рдиреЗ рдФрд░ рдЪрдЯреНрдЯрд╛рди рд╕реЗ рдЧрд┐рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЖрдк рдорд░ рдЬрд╛рдПрдВрдЧреЗ!
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдмрдВрдзрди рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдХреИрдЯ рд╣реБрдХ рдХреА рдХрдореА рд╣реИред
рд╣реБрдХ рдФрд░ рд░рд╕реНрд╕реА рдмрдирд╛рдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмрд┐рд▓реНрд▓реА-рд╣реБрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛рдлреА рд╕рд░рд▓ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХрдИ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣рд╛рдБ рджреЛ-рдЖрдпрд╛рдореА рдмрд┐рд▓реНрд▓реА-рд╣реБрдХ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рд╣реИрдВ:
- рд░рд╕реНрд╕реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ред рдЬрдм рд░рд╕реНрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреА рд╣реИ, рддреЛ рд╣рдо рдкрдВрдХреНрддрд┐ рд░реЗрдВрдбрд░ рдореЗрдВ рдФрд░ рд╕реЗрдЧрдореЗрдВрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд╕реНрд╕реА рдХреЗ рдмреНрд░реЗрдХ рдХреЗ рдЕрдиреБрд░реВрдк рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд░реНрдЯрд┐рдХрд▓ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
- DistanceJoint2Dред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрд▓реА рдХреЗ рд╣реБрдХ рдХреЗ рд╡рд░реНрддрдорд╛рди рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕реНрд▓рдЧ рд╕реНрд╡рд┐рдВрдЧ рд╣реЛ рд╕рдХреЗред рдпрд╣ рд╣рдореЗрдВ рджреВрд░реА рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╕реНрд╕реА рдХреЛ рд▓рдВрдмрд╛ рдХрд░рдиреЗ рдФрд░ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- RigidBody2D рдХреЗ рд╕рд╛рде рдЪрд╛рдЗрд▓реНрдб рдЧреЗрдордСрдмрдЬреЗрдХреНрдЯ, рдЬрд┐рд╕реЗ рд╣реБрдХ рдХреЗ рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рд░рд╕реНрд╕реА рдХрд╛ рдирд┐рд▓рдВрдмрди / рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛ред
- рд╣реБрдХ рдлреЗрдВрдХрдиреЗ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдХрд╛рд╕реНрдЯред
рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ
рдкреНрд▓реЗрдпрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдирдпрд╛ рдмрдЪреНрдЪрд╛ GameObject рдЬреЛрдбрд╝реЗрдВ RopeHingeAnchor рдирд╛рдоред рдЗрд╕ GameObject рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрдЯ рд╣реБрдХ рдХреЗ рдирд┐рд▓рдВрдмрди / рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
RopeHingeAnchor рдкрд░ SpriteRenderer рдФрд░
RigidBody2D рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВред
SpriteRenderer рдХреЗ рд▓рд┐рдП,
UISprite рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░
рдСрд░реНрдбрд░ рдХреЛ рд▓реЗрдпрд░ рдореЗрдВ
2 рдореЗрдВ рдмрджрд▓реЗрдВред рдЗрд╕рдХреЗ рдирд╛рдо рдХреЗ рдЖрдЧреЗ
рдмреЙрдХреНрд╕ рдХреЛ
рдЕрдирдЪреЗрдХ рдХрд░рдХреЗ рдШрдЯрдХ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред
RigidBody2D рдШрдЯрдХ рдХреЗ рд▓рд┐рдП
, рдмреЙрдбреА рдЯрд╛рдЗрдк рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ
рдХрд╛рдЗрдиреЗрдЯрд┐рдХ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рднреМрддрд┐рдХ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд░реЛрдк рд▓реЗрдпрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ X рдФрд░ Y рд╕реНрдХреЗрд▓ рдорд╛рди рдХреЛ
4 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ ред
рдлрд┐рд░ рд╕реЗ
рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдирдП
DistanceJoint2D рдШрдЯрдХ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред
RemoteJoint2D рдШрдЯрдХ рдХреА
рдХрдиреЗрдХреНрдЯреЗрдб рдХрдареЛрд░ рдмреЙрдбреА рдкреНрд░реЙрдкрд░реНрдЯреА рдкрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ
RopeHingeAnchor рдХреЛ рдЦреАрдВрдЪреЗрдВ рдФрд░
Auto Configure рджреВрд░реА рдХреЛ рдмрдВрдж рдХрд░реЗрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
рд░реЛрдкрд╕рд┐рд╕реНрдЯрдо рдирд╛рдордХ рдПрдХ рдирдпрд╛ C # рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЦреЛрд▓реЗрдВред
Update
рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рд▓реЗрдВред
RopeSystem
рд╡рд░реНрдЧ
RopeSystem
рдЕрдВрджрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░
RopeSystem
рдирдП рдЪрд░,
Awake()
рд╡рд┐рдзрд┐ рдФрд░ рдирдпрд╛
Update
:
рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХрд╛ рдХреНрд░рдо рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:
- рд╣рдо рдЗрди рдЪрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд░реЛрдкрд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВрдЧреЗред
Awake
рд╡рд┐рдзрд┐ рдЦреЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ ropeJoint
( ropeJoint
рдШрдЯрдХ) рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп ropeJoint
ред рдпрд╣ playerPosition
рдХреЛ рдкреНрд▓реЗрдпрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред- рдпрд╣ рдореБрдЦреНрдп
Update()
рд▓реВрдк рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо ScreenToWorldPoint
рдХреИрдорд░рд╛ ScreenToWorldPoint
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рджреБрдирд┐рдпрд╛ рдореЗрдВ рдорд╛рдЙрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдШрдЯрд╛рдХрд░ рдЕрдкрдиреЗ рдЯрдХрдЯрдХреА рдХреА рджрд┐рд╢рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рддрдм рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП aimAngle
, рдЬреЛ рдХрд░реНрд╕рд░ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЛрдг рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдорд╛рди рдЕрдЧрд░ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред aimDirection
рдПрдХ рдореЛрдбрд╝ рд╣реИ рдЬреЛ рдмрд╛рдж рдореЗрдВ рдХрд╛рдо рдЖрддрд╛ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ Z рдорд╛рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ 2D рдХреИрдорд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╕рдВрдЧрдд OS рд╣реИред рд╣рдо рдЙрджреНрджреЗрд╢реНрдп рдкрд╛рд╕ aimAngle * Mathf.Rad2Deg
, рдЬреЛ рд░реЗрдбрд┐рдпрди рдХреЛрдг рдХреЛ рдбрд┐рдЧреНрд░реА рдореЗрдВ рдХреЛрдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред- рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдирд┐рдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд▓рдЧрд╛рддрд╛рд░
transform.Position
рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред - рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕
if..else
рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЬрд▓реНрдж рд╣реА рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд░рд╕реНрд╕реА рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд╕рдВрдкрд╛рджрдХ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред
рдЦрд┐рд▓рд╛рдбрд╝реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ
рд░реЛрдкрд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдХреЛ
рд▓рдЯрдХрд╛рдПрдВ рдЬреЛ рд╣рдордиреЗ
рд░реЛрдкрд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрдирд╛рдП рдереЗред рдЙрдкрдпреБрдХреНрдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдбреНрд░реИрдЧ
рдкреНрд▓реЗрдпрд░ ,
рдХреНрд░реЙрд╕рд╣реЗрдпрд░ рдФрд░
рд░реЛрдкрд╣рд┐рдиреНрдЧрдЕрдВрдЪрд░ :
- рд░реЛрдк рд╣рд┐рдВрдЬ рдПрдВрдХрд░ : рд░реЛрдкрд╣рд┐рдВрдЧ рдПрдВрдХрд░
- рд░рд╕реНрд╕реА рд╕рдВрдпреБрдХреНрдд : рдЦрд┐рд▓рд╛рдбрд╝реА
- рдХреНрд░реЙрд╕рд╣реЗрдпрд░ : рдХреНрд░реЙрд╕рд╣реЗрдпрд░
- рдХреНрд░реЙрд╕рд╣реЗрдпрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ : рдХреНрд░реЙрд╕рд╣реЗрдпрд░
- рдкреНрд▓реЗрдпрд░ рдореВрд╡рдореЗрдВрдЯ : рдкреНрд▓реЗрдпрд░
рдЕрдм рд╣рдо рдЗрди рд╕рднреА рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдРрд╕рд╛ рдХреЛрдИ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рджрд┐рдЦрд╛ рд╕рдХреЗред рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ, рд╣рдо рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдХрд░реЗрдВрдЧреЗред
рд░рд╕реНрд╕реАрд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреЛрд▓реЗрдВ рдФрд░
рдЗрд╕рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:
private void SetCrosshairPosition(float aimAngle) { if (!crosshairSprite.enabled) { crosshairSprite.enabled = true; } var x = transform.position.x + 1f * Mathf.Cos(aimAngle); var y = transform.position.y + 1f * Mathf.Sin(aimAngle); var crossHairPosition = new Vector3(x, y, 0); crosshair.transform.position = crossHairPosition; }
рдпрд╣ рд╡рд┐рдзрд┐ рд╕рдВрдЪрд╛рд░рд┐рдд
aimAngle
(рдлреНрд▓реЛрдЯ рдорд╛рди рдЬрд┐рд╕реЗ рд╣рдордиреЗ
Update()
рдореЗрдВ рдЧрдгрдирд╛ рдХреА рд╣реИ
Update()
рдЖрдзрд╛рд░ рдкрд░ рджреГрд╖реНрдЯрд┐ рдХреЛ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ 1 рдпреВрдирд┐рдЯ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рд╕рд╛рде рдШреВрдорддрд╛ рд░рд╣реЗред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╕реНрдХреЛрдк рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред
Update()
рд╣рдо !ropeAttached
рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЛ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП !ropeAttached
рддрд╛рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ !ropeAttached
:
if (!ropeAttached) { SetCrosshairPosition(aimAngle); } else { crosshairSprite.enabled = false; }
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрдЪрд╛рдПрдВ рдФрд░ рдЦреЗрд▓ рдХреЛ рдЪрд▓рд╛рдПрдВред рдЕрдм рд╣рдорд╛рд░реЗ рд╕реНрд▓рдЧ рдХреЛ рдПрдХ рджреГрд╖реНрдЯрд┐ рд╕реЗ рдирд┐рд╢рд╛рдирд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рддрд░реНрдХ рдХрд╛ рдЕрдЧрд▓рд╛ рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдХреИрдЯ-рд╣реБрдХ рд╢реЙрдЯ рд╣реИред рд╣рдордиреЗ рд▓рдХреНрд╖реНрдп рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдкрд╣рд▓реЗ рд╣реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреАред
RopeSystem рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЪрд░ рдХреЗ рдиреАрдЪреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
public LineRenderer ropeRenderer; public LayerMask ropeLayerMask; private float ropeMaxCastDistance = 20f; private List<Vector2> ropePositions = new List<Vector2>();
рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдореЗрдВ рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ рдЬреЛ рд░рд╕реНрд╕реА рдЦреАрдВрдЪрддрд╛ рд╣реИред
рд▓реЗрдпрд░рдорд╛рд╕реНрдХ рдЖрдкрдХреЛ рднреМрддрд┐рдХреА рдкрд░рддреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
ropeMaxCastDistance
рд╡реИрд▓реНрдпреВ рдЕрдзрд┐рдХрддрдо рджреВрд░реА рддрдп рдХрд░рддреА рд╣реИ рдЬреЛ рд░реЗрдХрд╛рд╕реНрдЯ "рд╢реВрдЯ" рдХрд░ рд╕рдХрддреА рд╣реИред
рдЕрдВрдд рдореЗрдВ, рд╡реЗрдХреНрдЯрд░ 2 рдХреЗ рдкрджреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╕реНрд╕реА рд▓рдкреЗрдЯрдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдИ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
рдпрд╣рд╛рдБ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреНрдпрд╛ рд╣реИ:
- HandleInput рдХреЛ
Update()
рд▓реВрдк рд╕реЗ рдкреБрдХрд╛рд░рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╕ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдорд╛рдЙрд╕ рдмрдЯрди рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдкреЛрд▓ рдХрд░рддрд╛ рд╣реИред - рдЬрдм рдПрдХ рдмрд╛рдпрд╛рдБ-рдХреНрд▓рд┐рдХ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд░рд╕реНрд╕реА рд░реЗрдЦрд╛ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдПрдХ 2D- рд░реЗрдХрд╛рд╕реНрдЯ рдХреЛ рд▓рдХреНрд╖реНрдп рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХрддрдо рджреВрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рд╣реБрдХ рдмрд┐рд▓реНрд▓реА рдХреЛ рдПрдХ рдЕрдирдВрдд рджреВрд░реА рдкрд░ рдЧреЛрд▓реА рди рдорд╛рд░реА рдЬрд╛ рд╕рдХреЗ, рдФрд░ рдПрдХ рдореБрдЦреМрдЯрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рднреМрддрд┐рдХреА рдХреА рдкрд░рддреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ, рдЬрд┐рд╕рдореЗрдВ рд░реЗрдХрд╛рд╕реНрдЯ рдЯрдХрд░рд╛ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдПрдХ рд░реЗрдХрд╛рд╕реНрдЯ рд╣рд┐рдЯ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рддреЛ
ropeAttached
true
, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╕реНрд╕реА рдХреЗ рдХреЛрдиреЗ рдХреЗ рдкрджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреЛрдИ рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИред - рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рд╣реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд▓ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЖрд╡реЗрдЧ рдХреЛ рд╕реНрд▓рдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЬрдореАрди рд╕реЗ рдКрдкрд░
ropeJoint
, ropeJoint
( ropeJoint
) рдХреЛ рдЪрд╛рд▓реВ ropeJoint
, рдЬреЛ рд╕реНрд▓рдЧ рдФрд░ рд░реЗрдпрд╛рд╕реНрдЯ рд╣рд┐рдЯ рдмрд┐рдВрджреБ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЗ рдмрд░рд╛рдмрд░ рджреВрд░реА рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ рд╕реНрдкреНрд░рд╛рдЗрдЯ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред - рдпрджрд┐ рд░реЗрдХрд╛рд╕реНрдЯ рдХреБрдЫ рднреА рд╣рд┐рдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдФрд░ рд░рд╕реНрд╕реАрдЬреЙрдЗрдВрдЯ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░
ropeAttached
рдзреНрд╡рдЬ рдЭреВрдард╛ рд╣реИред - рдпрджрд┐ рд╕рд╣реА рдорд╛рдЙрд╕ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
ResetRope()
рд╡рд┐рдзрд┐ рдХреЛ ResetRope()
, рдЬреЛ рд░рд╕реНрд╕реА / рд╣реБрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реЗ
Update
рд╡рд┐рдзрд┐ рдХреЗ рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдирдП
HandleInput()
рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдХреЙрд▓ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП
aimDirection
рдкрд╛рд╕ рдХрд░реЗрдВ:
HandleInput(aimDirection);
RopeSystem.cs рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд╕рдВрдкрд╛рджрдХ рдкрд░ рд▓реМрдЯреЗрдВред
рд░рд╕реНрд╕реА рдЬреЛрдбрд╝рдирд╛
рд╣рдорд╛рд░рд╛ рд╕реНрд▓рдЧ рд░рд╕реНрд╕реА рдХреЗ рдмрд┐рдирд╛ рд╣рд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рджреЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬреЛ рд░рд╕реНрд╕реА рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдиреЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ "рдореЛрдбрд╝" рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ рджреБрдирд┐рдпрд╛ рдХреА рдЬрдЧрд╣ рдореЗрдВ рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╕реНрд╕реА рдХреЗ рдкрд╣рд▓реЗ рд╢реАрд░реНрд╖ (0) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдХреЛрдиреЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд░рд╕реНрд╕реА рдХреЛ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдХрд╛рдЬ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдХрд┐ рд░рд╕реНрд╕реА рдХреЗ рд╕рд╛рде рдЕрдЧрд▓рд╛ рдмрд┐рдВрджреБ рд╣реИ рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реЗред
рдкреНрд▓реЗрдпрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ
LineRenderer рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВред
рдЪреМрдбрд╝рд╛рдИ рдХреЛ
0.075 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
рд╕рд╛рдордЧреНрд░реА рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░,
рддрддреНрд╡ 0 рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ
рд╕рд╛рдордЧреНрд░реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд
рд░реЛрдкрдореИрдЯ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЖрдЦрд┐рд░ рдореЗрдВ рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдХреЗ рд▓рд┐рдП,
рдЯреЗрдХреНрд╕рдЪрд░ рдореЛрдб рдХреЗ рд▓рд┐рдП, рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрдЯ рдкреНрд░рддрд┐ рд╕реЗрдЧрдореЗрдВрдЯ рдЪреБрдиреЗрдВ ред
рд░реЛрдк рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ рдХреЗ
рд░реЛрдк рд░реЗрдВрдбрд░рд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдШрдЯрдХ рдХреЛ рдЦреАрдВрдЪреЗрдВред
рд░реЛрдк рд▓реЗрдпрд░ рдорд╛рд╕реНрдХ рдХреА рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЙрди рдкрд░рддреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрдпрди рдХрд░реЗрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд░реЗрдХреЙрд╕реНрдЯ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рд░рд╕реНрд╕реА рдФрд░ рдкрд┐рд╡рдЯ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдЬрдм рдПрдХ рд░реЗрдХрд╛рд╕реНрдЯ "рд╢реВрдЯрд┐рдВрдЧ", рдпрд╣ рдХреЗрд╡рд▓ рдЗрди рдкрд░рддреЛрдВ рд╕реЗ рдЯрдХрд░рд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реАред
рдпрджрд┐ рдЖрдк рдЕрднреА рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦреЗрдВрдЧреЗред рдЬрдм рд╣рдо рд╕реНрд▓рдЧ рдХреЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рдПрдХ рдкрддреНрдерд░ рдХреЛ рдирд┐рд╢рд╛рдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реБрдХ рдХреЗ рд╕рд╛рде рд╢реВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдЫрд▓рд╛рдВрдЧ рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░рд╛ рдорд┐рддреНрд░ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред

рд╣рдордиреЗ рдЕрднреА рддрдХ рд╕рдВрдпреБрдХреНрдд рджреВрд░реА рдХреЗ рд▓рд┐рдП рджреВрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХреА рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд╛рдЗрди рд░реЗрдВрдбрд░ рдХреЗ рдХреЛрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд░рд╕реНрд╕реА рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ рджреВрд░реА рд╕рдВрдпреБрдХреНрдд рд╕реАрдзреЗ рд╕реНрд▓рдЧ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдКрдкрд░ рд╣реИ, рджреВрд░реА рд╕рдВрдпреБрдХреНрдд рджреВрд░реА рдХрд╛ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдЗрд╕реЗ рдиреАрдЪреЗ рдХреЗ рдкрддреНрдерд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ, рдЕрдм рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред
RopeSystem.cs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ
, рдХреНрд▓рд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ рдЬреЛрдбрд╝реЗрдВ:
using System.Linq;
рдпрд╣ рд╣рдореЗрдВ LINQ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╕ рд╣рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ
ropePositions
рд╕реВрдЪреА рдХреЗ рдкрд╣рд▓реЗ рдпрд╛ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдиреЛрдЯ : рднрд╛рд╖рд╛-рдПрдХреАрдХреГрдд рдХреНрд╡реЗрд░реА (LINQ) рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдХрд╛ рдирд╛рдо рд╣реИ рдЬреЛ рд╕реАрдзреЗ рд╕реА # рдореЗрдВ рдХреНрд╡реЗрд░реА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдиреНрдп рдЪрд░ рдХреЗ рдЕрдВрддрд░реНрдЧрдд
distanceSet
рдХреЗ рдирд╛рдо рд╕реЗ рдПрдХ рдирдпрд╛ рдмреВрд▓ рдирд┐рдЬреА рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
private bool distanceSet;
рд╣рдо рдЗрд╕ рдЪрд░ рдХреЛ рдПрдХ рдзреНрд╡рдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╣ рдкрд╣рдЪрд╛рди рд╕рдХреЗ рдХрд┐ рд░рд╕реНрд╕реА рдХреА рджреВрд░реА (рдЦрд┐рд▓рд╛рдбрд╝реА рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдХреЗ рдмреАрдЪ рдЬрд╣рд╛рдВ рдХреИрдЯ рд╣реБрдХ рд╕рдВрд▓рдЧреНрди рд╣реИ) рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рд╣реИред
рдЕрдм рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд▓рд╛рдЗрди рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╕реНрд╕реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдкрджреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдФрд░ рд░рд╕реНрд╕реА (
ropePositions
) рдХреЗ рд╕рд╛рде рдкрджреЛрдВ рдХреА рд╕рдВрдЧреНрд░рд╣реАрдд рд╕реВрдЪреА рдореЗрдВ рджреВрд░реА рдХреА рд╕рдВрдпреБрдХреНрдд рджреВрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд
ropePositions
:
private void UpdateRopePositions() {
рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдмрддрд╛рдПрдВ:
- рд░рд╕реНрд╕реА рд╕рдВрд▓рдЧреНрди рди рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдзрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред
- рд╣рдо рд░реЛрдк рд▓рд╛рдЗрди рдХреЗ рд░реЗрдВрдбрд░ рдкреЙрдЗрдВрдЯреНрд╕ рдХреА рд╡реИрд▓реНрдпреВ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд░реЛрдк рдкреЛрдЬрд┐рд╢рди рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЧрдП
ropePositions
рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ 1 (рдкреНрд▓реЗрдпрд░ рдХреА рдкреЛрдЬреАрд╢рди рдХреЗ рд▓рд┐рдП) рд╣реИред - рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рддрд┐ (рдЕрдВрддрд┐рдо рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЗ рд▓рд┐рдП
ropePositions
рд╕реВрдЪреА рдФрд░ рд▓реВрдк рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реВрдк рдХрд░рддреЗ рд╣реИрдВ, ropePositions
рд╕реВрдЪреА рдореЗрдВ рд▓реВрдк рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд ropePositions
рд╕реНрдерд┐рддрд┐ рдХреЗ рдорд╛рди рдХреЛ рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдХреЗ рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред - рд░рд╕реНрд╕реА рдХреЗ рдЕрдВрдд рдмрд┐рдВрджреБ рд╕реЗ рджреВрд╕рд░реА рдЬрдЧрд╣ рд░рд╕реНрд╕реА рдХреЗ рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдХрд╛рдЬ / рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд╕реНрд╕реА рдХреА рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реИ, рддреЛ рдЗрд╕реЗ рд▓рдВрдЧрд░ рдмрд┐рдВрджреБ рдмрдирд╛рдПрдВред рддреЛ рд╣рдо рджреВрд░реА
ropeJoint
рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдФрд░ рд░рд╕реНрд╕реА рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА, рдЬреЛ рд╣рдо рд▓реВрдк рдореЗрдВ ropeJoint
ред - рдпрджрд┐ рдирд┐рд░реНрдорд╛рдг рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд▓реВрдк рдореЗрдВ рд░рд╕реНрд╕реА рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдВрдд рд╕реЗ рджреВрд╕рд░реА рд╣реИ; рдпрд╛рдиреА рд╡рд╣ рдмрд┐рдВрджреБ рдЬрд┐рд╕ рдкрд░ рд░рд╕реНрд╕реА рд╡рд╕реНрддреБ рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╡рд░реНрддрдорд╛рди рдХрд╛рдЬ / рд▓рдВрдЧрд░ рдмрд┐рдВрджреБред
- рдпрд╣
else
рдмреНрд▓реЙрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдорд╛рди рдХреЛ рд░рд╕реНрд╕реА рдХреЗ рдЕрдВрддрд┐рдо рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
UpdateRopePositions()
рдХреЙрд▓ рдХреЛ
Update()
рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВ
UpdateRopePositions()
:
UpdateRopePositions();
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЦреЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБред рд▓рдХреНрд╖реНрдп рд╕реЗ рдКрдкрд░ рдПрдХ рдкрддреНрдерд░ рдкрд░ рдПрдХ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдирд┐рд╢рд╛рдирд╛ рд▓рдЧрд╛рдХрд░ рдФрд░ рд╢реВрдЯрд┐рдВрдЧ рдХрд░рдХреЗ рдПрдХ "рдЫреЛрдЯреА рдЬрдЧрд╣" рдХреЛ рдПрдХ рдЫреЛрдЯреА рдЫрд▓рд╛рдВрдЧ рдмрдирд╛рдПрдВред рдЕрдм рдЖрдк рдЕрдкрдиреЗ рдордЬрджреВрд░реЛрдВ рдХреЗ рдлрд▓реЛрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ - рдкрддреНрдерд░реЛрдВ рдкрд░ рд╢рд╛рдВрдд рддрд░реАрдХреЗ рд╕реЗ рдврд▓рд╛рдиред
рдЕрдм рдЖрдк рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд▓реЗрдпрд░ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд╡ рдЯреВрд▓ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ,
рдбрдмреНрд▓реНрдпреВ рдХреБрдВрдЬреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░рд╕реНрд╕реА рд▓рд╛рдЗрди рдХреЗ рджреЛ рдХреЛрдиреЗ рдХреИрд╕реЗ рд╣реБрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рд░рд╕реНрд╕реА рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рджреВрд░реАрдЬреЗрди 2 рдбреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд▓рдЧ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдХрд╛рдЬ рдкрд░ рдЭреВрд▓рддреЗ рд░рд╣реЗрдВрдЧреЗред
рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдЕрдВрдХ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛
рдПрдХ рдЭреВрд▓рддреЗ рд╣реБрдП рд╕реНрд▓рдЧ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдЕрдм рддрдХ рдкрд╛рдиреА рд╕реЗ рдмрдЪрд╛рдиреЗ рд╡рд╛рд▓реА рдХреНрд░реАрдо рддреМрд▓рд┐рдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд╕реНрд╕реА рдкрджреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдИ рдЬреЛрдбрд╝реА рдЧрдИ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрднреА рддрдХ рд╣рдо рдХреЗрд╡рд▓ рджреЛ рд░рд╕реНрд╕реА рдкрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЙрд╕рдХреА рд╢реВрдЯрд┐рдВрдЧ рдХреЗ рд╕рдордп рд╣реБрдХ рдХреЗ рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗред
рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рд░рд╕реНрд╕реА рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкрджреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдкрддреНрдерд░реЛрдВ рдкрд░ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рд╕реНрд╕реА рд▓рдкреЗрдЯрдиреА рдЪрд╛рд╣рд┐рдП, рд▓рд╛рдЗрди рд░реЗрдВрдбрд░рд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЯреЗрдХреНрд╕ рдкреЛрдЬрд┐рд╢рди рдЬреЛрдбрд╝рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд░рд╕реНрд╕рд┐рдпреЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░ рд░рд╕реНрд╕реА рдХреЗ рдХрд░рдВрдЯ / рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯ рдХреЗ рдмреАрдЪ рд╕реАрдзреА рд░реЗрдЦрд╛ рдХреЗ рдмреАрдЪ рдХреЛрд▓рд╛рдЗрдбрд░ рд╡рд░реНрдЯреЗрдХреНрд╕ рдкреЙрдЗрдВрдЯ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рдкреБрд░рд╛рдиреА рд░реЗрдХрд╛рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рд╣реИ!
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд░рд╛рдИрдбрдХрд╛ рдХреЗ рд╣рд┐рдЯ рдкреЙрдЗрдВрдЯ рдФрд░ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрд▓рд╛рдЗрдбрд░ рдореЗрдВ рдирд┐рдХрдЯрддрдо рдмрд┐рдВрджреБ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХреЗред
RopeSystem.cs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:
рдпрджрд┐ рдЖрдк LINQ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЛрдб рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬрдЯрд┐рд▓ C # рдЬрд╛рджреВ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдбрд░реЗрдВ рдирд╣реАрдВред LINQ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- рдпрд╣ рд╡рд┐рдзрд┐ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддреА рд╣реИ - RaycastHit2D рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ PolygonCollider2D рдСрдмреНрдЬреЗрдХреНрдЯ ред рд╕реНрддрд░ рдкрд░ рд╕рднреА рдкрддреНрдерд░реЛрдВ рдореЗрдВ PolygonCollider2D рдХреЛрд▓рд╛рдЗрдбрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ PolygonCollider2D рдЖрдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
- рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ LINQ рдХреНрд╡реЗрд░реА рдореИрдЬрд┐рдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ! рдпрд╣рд╛рдВ рд╣рдо рдкреЙрд▓реАрдЧреЙрдирд▓ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╡реЗрдХреНрдЯрд░ 2 (рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХрд╛ рдореВрд▓реНрдп рд╕реНрд╡рдпрдВ рд╕реНрдерд┐рддрд┐ рд╣реИ) рдХреЗ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреА рдХреБрдВрдЬреА рдХреЛ рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕реНрдерд┐рддрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА (рдлреНрд▓реЛрдЯ рдорд╛рди) рдХреА рджреВрд░реА рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрднреА-рдХрднреА рдпрд╣рд╛рдВ рдХреБрдЫ рдФрд░ рд╣реЛрддрд╛ рд╣реИ: рдкрд░рд┐рдгрд╛рдореА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрдерд╛рди рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреЛрд▓рд╛рдЗрдбрд░ рдХреЗ рдкрджреЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд╛рдиреАрдп рд╕рдВрдмрдВрдз рдЬрд┐рд╕рд╕реЗ рдХреЛрд▓рд╛рдЗрдбрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдФрд░ рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡ рд╕реНрдерд╛рди рдореЗрдВ рдкрджреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
- рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдирд┐рдХрдЯрддрдо рджреВрд░реА рд╕реЗред рдирд┐рдХрдЯрддрдо рджреВрд░реА рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдмрд┐рдВрджреБ рдЦрд┐рд▓рд╛рдбрд╝реА рдФрд░ рд░рд╕реНрд╕реА рдХреЗ рдХрд╛рдЬ рдХреЗ рдмреАрдЪ рдХрд╛ рдмрд┐рдВрджреБ рд╣реИ!
рдЖрдЗрдП рд╡рд╛рдкрд╕
рд░реЛрдкрд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдирдпрд╛ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
private Dictionary<Vector2, int> wrapPointsLookup = new Dictionary<Vector2, int>();
рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдкрджреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдирдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рд╕реНрд╕реА рд▓рдкреЗрдЯ рд╕рдХрддреА рд╣реИред
Update()
рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╡рд╣реА рдирд┐рд░реНрдорд╛рдг рдвреВрдВрдвреЗрдВ рдЬрд┐рд╕рдореЗрдВ
crosshairSprite.enabled = false;
рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдордЭрд╛рдЗрдП:
- рдпрджрд┐ рдХреБрдЫ рдкрджреЛрдВ рдХреЛ
ropePositions
рд╕реВрдЪреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ ... - рд╣рдо рд╕реВрдЪреА рд╕реЗ рд░рд╕реНрд╕реА рдХреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢реВрдЯ рдХрд░рддреЗ рд╣реИрдВ - рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдЬрд┐рд╕ рдкрд░ рдмрд┐рд▓реНрд▓реА рдиреЗ рдкрддреНрдерд░ рдХреЛ рдЭреБрдХрд╛ рджрд┐рдпрд╛ - рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЗ рдмрд░рд╛рдмрд░ рд░реЗрдХрд╛рд╕реНрдЯ рдХреА рджреВрд░реА рдФрд░ рд░рд╕реНрд╕реА рдХреЗ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ред
- рдпрджрд┐ рд░реЗрдХрд╛рд╕реНрдЯ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкреЙрд▓реАрдЧреЛрдирдХреЙрд▓рд┐рдбрд░ 2 рдбреА рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рдЪреНрдЪрд╛ PolygonCollider2D рд╣реИ, рдЗрд╕ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреА рдирд┐рдХрдЯрддрдо рд╢реАрд░реНрд╖ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рдо рд╡реЗрдХреНрдЯрд░ 2 рдХреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦреЗ рдЧрдП рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред
- рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ
wrapPointsLookup
рджреНрд╡рд╛рд░рд╛ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рд░рд╕реНрд╕реА рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрд╛рдЯ рджреЗрддреЗ рд╣реИрдВ, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЧрд┐рд░рд╛ рджреЗрддреЗ рд╣реИрдВред - рдлрд┐рд░
ropePositions
рд╕реВрдЪреА ropePositions
: рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рд╕реНрд╕реА ropePositions
рдЪрд╛рд╣рд┐рдПред wrapPointsLookup
рд╢рдмреНрджрдХреЛрд╢ рднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, UpdateRopePositions()
рдлреНрд▓реИрдЧ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ UpdateRopePositions()
рд╡рд┐рдзрд┐ рд░рд╕реНрд╕реА рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рд░рд╕реНрд╕реА рдХреА рджреВрд░реА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХреЗред
ResetRope()
рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ
ResetRope()
рддрд╛рдХрд┐ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рджреНрд╡рд╛рд░рд╛ рдПрдХ рд░рд╕реНрд╕реА рдХреЛ рдХрд╛рдЯ рджреЗрдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░
wrapPointsLookup
рдбрд┐рдХреНрд╢рдирд░реА рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рдП:
wrapPointsLookup.Clear();
рдЧреЗрдо рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рд╕реНрд▓рдЧ рдХреЗ рдКрдкрд░ рдкрддреНрдерд░ рдХреЗ рд╣реБрдХ рдореЗрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рд╣реБрдХ рдХреЛ рдЧреЛрд▓реА рдорд╛рд░реЛ рдФрд░ рдХрдИ рдкрддреНрдерд░ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╕реНрд▓рдЧ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ рдореВрд╡ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╕реНрд╕реА рд╕рд┐рдЦрд╛рдИ!
рд░реЙрдХрд┐рдВрдЧ рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ
рд░рд╕реНрд╕реА рдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╕реНрд▓рдЧ рдмрд╣реБрдд рд╕реНрдерд┐рд░ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрд╡рд┐рдВрдЧрд┐рдВрдЧ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЖрдЧреЗ рдХреА рддрд░рдл (рдмрдЧрд╝рд▓ рдореЗрдВ) рдЭреВрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рдЬрд┐рд╕ рдХреЛрдг рд╕реЗ рд╡рд╣ рджреЗрдЦ рд░рд╣рд╛ рд╣реЛред
PlayerMovement.cs рдЦреЛрд▓реЗрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
public Vector2 ropeHook; public float swingForce = 4f;
ropeHook
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд░реЛрдк рд╣реБрдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░
swingForce
рд╡рд╣ рдореВрд▓реНрдп рд╣реИ рдЬреЛ рд╣рдо рд╕реНрд╡рд┐рдВрдЧ рдореЛрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
FixedUpdate()
рд╡рд┐рдзрд┐
FixedUpdate()
рдирдП рдХреЗ
FixedUpdate()
рдмрджрд▓реЗрдВ:
void FixedUpdate() { if (horizontalInput < 0f || horizontalInput > 0f) { animator.SetFloat("Speed", Mathf.Abs(horizontalInput)); playerSprite.flipX = horizontalInput < 0f; if (isSwinging) { animator.SetBool("IsSwinging", true);
рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдмрджрд▓рд╛рд╡ рдпрд╣ рд╣реИ рдХрд┐ рдЭрдВрдбреЗ рдХреЛ рдкрд╣рд▓реЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ isSwinging
рддрд╛рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗрд╡рд▓ рддрдм рдХреА рдЬрд╛рдП рдЬрдм рд╕реНрд▓рдЧ рдХреЛ рд░рд╕реНрд╕реА рдкрд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рд╣рдо рд╕реНрд▓рдЧ рдХреЗ рдХреЛрдиреЗ рдкрд░ рдПрдХ рд▓рдВрдмрд╡рдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдпрд╣ рд░рд╕реНрд╕реА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЗрд╕рдХреЗ рд╡рд░реНрддрдорд╛рди рдПрдВрдХрд░ рдмрд┐рдВрджреБ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕реНрд╡рд┐рдВрдЧ рдХреА рджрд┐рд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╡рддред- рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реЗ рд╣реБрдХ рд▓рдЧрд╛рд╡ рдмрд┐рдВрджреБ рддрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рджрд┐рд╢рд╛ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
- рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд▓рдЧ рд╕рд╛рдЗрдб рд▓реЗрдлреНрдЯ рд╣реИ рдпрд╛ рд░рд╛рдЗрдЯ, рд╕реАрдзрд╛ рджрд┐рд╢рд╛ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ
playerToHookDirection
ред рдбрд┐рдмрдЧ рдбреНрд░рд╛ рдХреЙрд▓ рднреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рджреЗрдЦ рд╕рдХреЗрдВред
RopeSystem.cs рдЦреЛрд▓реЗрдВ рдФрд░ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдЕрдиреНрдп рдмреНрд▓реЙрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:if(!ropeAttached)
Update()
playerMovement.isSwinging = true; playerMovement.ropeHook = ropePositions.Last();
рдореЗрдВ рдЕрдЧрд░ рдмреНрд▓реЙрдХ рдПрдХ рд╣реА рдбрд┐рдЬрд╛рдЗрди рдХреА if(!ropeAttached)
, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ: playerMovement.isSwinging = false;
рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреНрд▓реЗрдпрд░рдореЛрд╡рдореЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реНрд╡рд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд░рд╕реНрд╕реА рдХреЗ рдЕрдВрддрд┐рдо (рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рд╕реНрдерд┐рддрд┐ рдХреЛ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ - рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд░рд╕реНрд╕реА рдХрд╛ рдПрдВрдХрд░ рдкреЙрдЗрдВрдЯред рдпрд╣ рд▓рдВрдмрд╡рдд рдХреЛрдг рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдЕрднреА-рдЕрднреА рдкреНрд▓реЗрдпрд░рдореВрд╡рдореЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИредрдпрджрд┐ рдЖрдк рдПрдХ рдЪрд▓ рд░рд╣реЗ рдЦреЗрд▓ рдореЗрдВ рдЧрд┐рдЬрд╝реНрдореЛ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдПрдВ рдпрд╛ рджрд╛рдПрдВ рд╕реНрд╡рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдП рдпрд╛ рдбреА рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:рд░рд╕реНрд╕реА рд╡рдВрд╢ рдЬреЛрдбрд╝рдирд╛
рдЬрдмрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд╕реНрд╕реА рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рд╕реНрд▓рдЧ рдЖрд╕рд╛рдиреА рд╕реЗ рд░рд╕реНрд╕реА рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЙрда рд╕рдХрддрд╛ рдФрд░ рдЧрд┐рд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдРрд╕рд╛ рдЦреЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рд░рд╕реНрд╕реАрд╕рд┐рд╕реНрдЯрдорд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ , рджреЛ рдирдП рдлрд╝реАрд▓реНрдб рдЪрд░ рдЬреЛрдбрд╝реЗрдВ: public float climbSpeed = 3f; private bool isColliding;
climbSpeed
рдЙрд╕ рдЧрддрд┐ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕ рдкрд░ рд╕реНрд▓рдЧ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рд░рд╕реНрд╕реА рдХреЛ isColliding
рд▓реЗ рдЬрд╛ рд╕рдХрддреА рд╣реИ , рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреНрд╡рдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рджреВрд░реА рд╕рдВрдпреБрдХреНрдд рд░рд╕реНрд╕реА рдХреА рджреВрд░реА рд╕рдВрдпреБрдХреНрдд рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдпрд╛ рдШрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдЗрд╕ рдирдИ рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝реЗрдВ: private void HandleRopeLength() {
рдпрд╣ рдмреНрд▓реЙрдХ if..elseif
рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ (рдХреАрдмреЛрд░реНрдб рдкрд░ / рдиреАрдЪреЗ рдпрд╛ рдбрдмреНрд▓реНрдпреВ / рдПрд╕), рдФрд░, рдЭрдВрдбреЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, ropeAttached iscColliding
рджреВрд░реА рдХреЛ рдмрдврд╝рд╛рддрд╛ рдпрд╛ рдШрдЯрд╛рддрд╛ рд╣реИ ropeJoint
, рдЬрд┐рд╕рд╕реЗ рд░рд╕реНрд╕реА рдХреЛ рд▓рдВрдмрд╛ рдпрд╛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИредрд╣рдо рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдХреЙрд▓ рдХреЛ рдЕрдВрдд рддрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ Update()
: HandleRopeLength();
рд╣рдореЗрдВ рдЭрдВрдбрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рднреА рдЪрд╛рд╣рд┐рдП isColliding
редрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ: void OnTriggerStay2D(Collider2D colliderStay) { isColliding = true; } private void OnTriggerExit2D(Collider2D colliderOnExit) { isColliding = false; }
рдпреЗ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рдореЛрдиреЛрдмреЗрд╣реМрд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреА рдореВрд▓ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВредрдпрджрд┐ рдХреЛрд▓рд╛рдЗрдбрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЦреЗрд▓ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рднреМрддрд┐рдХ рд╡рд╕реНрддреБ рдХреЛ рдЫреВрддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рд▓рдЧрд╛рддрд╛рд░ рдЖрдЧ OnTriggerStay2D
рд▓рдЧрд╛рдПрдЧрд╛, рдзреНрд╡рдЬ рдХреЛ рдПрдХ isColliding
рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ true
ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╕реНрд▓рдЧ рдкрддреНрдерд░ рдХреЛ рдЫреВрддрд╛ рд╣реИ, рддреЛ рдЖрдЗрд╕реЛрд▓реНрдбрд┐рдВрдЧ рдзреНрд╡рдЬ рдХреЛ рдПрдХ рдорд╛рди рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ true
редрд╡рд┐рдзрд┐ рдХреЛ OnTriggerExit2D
рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдПрдХ рдХреЛрд▓рд╛рдЗрдбрд░ рджреВрд╕рд░реЗ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдЭрдВрдбреЗ рдХреЛ рдЭреВрдард╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИредрдзреНрдпрд╛рди рд░рдЦреЗрдВ: рд╡рд┐рдзрд┐ OnTriggerStay2D
рдмрд╣реБрдд рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдорд╣рдВрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд░реЗрдВредрдЖрдЧреЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ?
рдЧреЗрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдмрд╛рд░ рд░рд╕реНрд╕реА рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд░реЛ рдХреАрдЬрд╝ рдпрд╛ рдбрдмреНрд▓реНрдпреВ / рдПрд╕ рджрдмрд╛рдПрдБредрдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдХреА рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ редрд╣рдо рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ - рдиреЙрди-рд╕реНрд╡рд┐рдВрдЧрд┐рдВрдЧ рд╕реНрд▓рдЧ-рд╕реНрд▓рдЧ рд╕реЗ рд▓реЗрдХрд░ рдПрдХреНрд░реЛрдмреИрдЯрд┐рдХ рд╢реЗрд▓-рдлреНрд░реА рдЧреИрд╕реНрдЯреНрд░реЛрдкреЙрдб рдореЛрд▓рд╕реНрдХ!рдЖрдкрдиреЗ рд╕реАрдЦрд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдкрд░ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд╣реБрдХ рдХреЛ рдЧреЛрд▓реА рдорд╛рд░ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдХреЛрд▓рд╛рдЗрдбрд░ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдЪрд┐рдкрдХ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдЙрд╕ рдкрд░ рдЭреВрд▓рддрд╛ рд╣реИ, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд░рд╕реНрд╕реА рдкрд░ рдШреВрдорддрд╛ рд╣реИ! рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рд╣реИредрд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдпрд╣рд╛рдВ рдЧрд╛рдпрдм рд╣реИ - рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд░рд╕реНрд╕реА "рдЦреЛрд▓рдирд╛" рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗредрд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ рдореМрдХрд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЦреБрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ? рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ wrapPointsLookup
ред