рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди рдкрд░ рдЦреЗрд▓ "рд╕рд┐рдХреНрдХреЛрдВ рдХреА рддрд░рд╣" рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рднрд╛рдЧ 1

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


рдкрд░рд┐рдЪрдп


рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдЪреАрдЬ рдЬреЛ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ рдЦреЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп рдЪрд░рд┐рддреНрд░ рд╕рд┐рдХреНрдХреЗ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛ред рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реАрдорд┐рдд рдХрд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдмрд╛рдзрд╛ рдФрд░ рд╕рдордп рдЬреЛрдбрд╝реЗрдВред рдЦреЗрд▓ рдореЗрдВ 3 рджреГрд╢реНрдп рд╣реЛрдВрдЧреЗ: Player , Coin рдФрд░ HUD (рдпрд╣ рд▓реЗрдЦ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЬрд┐рд╕реЗ рдПрдХ Main рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред



рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕


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


рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдЬреНрдЮрд╛рди рдФрд░ рдХреМрд╢рд▓ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдЕрднреА рднреА рд╣реВрдВред рдореИрдВ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрдВрдЬрди рдХреЗ рдореВрд▓ рдШрдЯрдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВ, GDScript рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╢рдмреНрджрд╛рд╡рд▓реА рдХреА рд╕рдордЭ рдореЗрдВ рдЖрдПрдБ (рдиреЛрдбреНрд╕, рджреГрд╢реНрдп, рд╕рдВрдХреЗрдд, рдЖрджрд┐), рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдпрд╣рд╛рдБ рд▓реМрдЯреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдкрд░рд┐рдЪрд┐рдд рдХреЛ рдЬрд╛рд░реА рд░рдЦреЗрдВред

рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдиреВ рдореЗрдВ, Project -> Project Settings ред


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

Display/Window рдЕрдиреБрднрд╛рдЧ рдвреВрдВрдвреЗрдВ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХреЛ 800 рдФрд░ рдКрдВрдЪрд╛рдИ рдХреЛ 600 рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕ рдЦрдВрдб рдореЗрдВ, Stretch/Mode рдХреЛ 2D рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ Keep рд▓рд┐рдП Aspect ред рдпрд╣ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдЦрд┐рдбрд╝рдХреА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЦреАрдВрдЪрдирд╛ рдФрд░ рд╡рд┐рд░реВрдкрдг рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЦрд┐рдбрд╝рдХреА рдХреЛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ Resizable рдмреЙрдХреНрд╕ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВред рдореИрдВ рдЖрдкрдХреЛ рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред


рдЕрдм Rendering/Quality рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рд░рд╛рдЗрдЯ рдкреЗрди рдореЗрдВ Use Pixel Snap рдХреЛ рдСрди Use Pixel Snap ред рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ? рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди рдореЗрдВ рд╡реИрдХреНрдЯрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдЖрдзреЗ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рдирд╣реАрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рд╕рдВрдЧрддрд┐ рдЙрди рдЦреЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рджреЛрд╖ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ рдЬреЛ pixelart рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ 3 рдбреА рдореЗрдВ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмреЗрдХрд╛рд░ рд╣реИред рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВред


рдЦрд┐рд▓рд╛рдбрд╝реА рджреГрд╢реНрдп


рдЪрд▓рд┐рдП рдкрд╣рд▓рд╛ рджреГрд╢реНрдп рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - Player ред


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

рджреГрд╢реНрдп рдмрдирд╛рдирд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рд░рд▓ рдХреНрд░рд┐рдпрд╛ рд╣реИ - Scene рдЯреИрдм рдкрд░, + (рдЬреЛрдбрд╝реЗрдВ / рдмрдирд╛рдПрдВ) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ Area2D рдиреЛрдб рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рддреБрд░рдВрдд рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрдВ рддрд╛рдХрд┐ рднреНрд░рдорд┐рдд рди рд╣реЛрдВред рдпрд╣ рд╣рдорд╛рд░рд╛ рдореВрд▓ рдиреЛрдб рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдмрд╛рд▓ рдиреЛрдбреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ AnimatedSprite рдФрд░ CollisionShape2D , рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЬрд▓реНрджреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдХреНрд░рдо рдореЗрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд░реВрдЯ рдиреЛрдб рдХреЛ рддреБрд░рдВрдд "рд▓реЙрдХ" рдХрд░реЗрдВ:



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


AnimatedSprite


Area2D рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдиреЛрдб рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рдЙрдирдХреЗ рдЯрдХрд░рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдУрд╡рд░рд▓реИрдк рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдпрд╣ рдЖрдВрдЦ рдХреЗ рд▓рд┐рдП рдЕрджреГрд╢реНрдп рд╣реИ рдФрд░ Player рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ AnimatedSprite рдПрдбрдкреНрд░рд┐рдЯрд╕рд╛рдЗрдЯ рдЬреЛрдбрд╝рдХрд░ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдиреЛрдб рдХрд╛ рдирд╛рдо рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдирд┐рдореЗрд╢рди рдФрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред Inspector рд╡рд┐рдВрдбреЛ рдореЗрдВ, Frames рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдПрдХ рдирдпрд╛ SpriteFrames ред SpriteFrames рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдирд╛ рдФрд░ рдЙрдирдХреЗ рд╕рдорд╛рди рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рд╣рдо рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдПрдирд┐рдореЗрд╢рди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП: walk (рдПрдиреАрдореЗрд╢рди walk ), idle (рдЖрд░рд╛рдо рдХрд░рдирд╛ рд░рд╛рдЬреНрдп) рдФрд░ die (рдореГрддреНрдпреБ рдпрд╛ рд╡рд┐рдлрд▓рддрд╛ рдПрдиреАрдореЗрд╢рди)ред SPEED (FPS) рдХрд╛ рдорд╛рди рдордд рднреВрд▓рдирд╛ 8 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рдореВрд▓реНрдп рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ - рдЙрдкрдпреБрдХреНрдд)ред



CollisionShape2D


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


рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ


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


 export (int) var speed var velocity = Vector2() var window_size = Vector2(800, 600) 

export рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк Inspector рдкреИрдирд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ speed рдЪрд░ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╡рд┐рдзрд┐ рд╣реИ рдпрджрд┐ рд╣рдо рдХрд╕реНрдЯрдо рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ Inspector рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред Speed 350 рд╕реЗрдЯ рдХрд░реЗрдВред velocity рдорд╛рди рдЖрдВрджреЛрд▓рди рдХреА рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ window_size рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИред


рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЖрдЧреЗ рдХрд╛ рдХреНрд░рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рд╣рдо get_input() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ get_input() рдХрд┐ рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдлрд┐рд░ рд╣рдо рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдПрдиреАрдореЗрд╢рди рдЦреЗрд▓реЗрдВрдЧреЗред рдЦрд┐рд▓рд╛рдбрд╝реА рдЪрд╛рд░ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди рдореЗрдВ рддреАрд░ рдХреБрдВрдЬреА ( Project -> Project Settings -> Input Map ) рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдХреБрдВрдЬреА рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ Input.is_action_pressed() рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЙрд╕ рдШрдЯрдирд╛ рдХреЗ рдирд╛рдо рд╕реЗ Input.is_action_pressed() рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЖрдк рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


 func get_input(): velocity = Vector2() if Input.is_action_pressed("ui_left"): velocity.x -= 1 if Input.is_action_pressed("ui_right"): velocity.x += 1 if Input.is_action_pressed("ui_up"): velocity.y -= 1 if Input.is_action_pressed("ui_down"): velocity.y += 1 if velocity.length() > 0: velocity = velocity.normalized() * speed 

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


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


 func _process(delta): get_input() position += velocity * delta position.x = clamp(position.x, 0, window_size.x) position.y = clamp(position.y, 0, window_size.y) 

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк delta рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЧрддрд┐ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред рдЦреЗрд▓ рдЗрдВрдЬрди рд╢реБрд░реВ рдореЗрдВ 60 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреА рдЧрддрд┐ рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрдм рдХрдВрдкреНрдпреВрдЯрд░ рдпрд╛ рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди рд╕реНрд╡рдпрдВ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдлреНрд░реЗрдо рджрд░ рд╕реБрд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ (рдлреНрд░реЗрдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп), рддреЛ рдпрд╣ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреА "рдЪрд┐рдХрдирд╛рдИ" рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ (рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдВрджреЛрд▓рди "рдЭрдЯрдХреЗрджрд╛рд░" рд╣реИ)ред "рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди" delta рдЪрд░ рдкреЗрд╢ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ (рдЬреИрд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╛рди рдЗрдВрдЬрди) рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдЙрд╕ рдореВрд▓реНрдп рдХреЛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдо рдмрджрд▓ рджрд┐рдП рдЧрдП рдереЗред рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдЖрдВрджреЛрд▓рди рдХреЛ "рд╕рдВрд░реЗрдЦрд┐рдд" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдФрд░ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдХрд╛рд░реНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - clamp (рджреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рднреАрддрд░ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ), рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╣рдо рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рдЬреЛ Player рдХреЗрд╡рд▓ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред


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


 if velocity.length() > 0: $AnimatedSprite.animation = "walk" $AnimatedSprite.flip_h = velocity.x < 0 else: $AnimatedSprite.animation = "idle" 

рдЬрдиреНрдо рдФрд░ рдореГрддреНрдпреБ


рдЧреЗрдо рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╕рдордп, рдореБрдЦреНрдп рджреГрд╢реНрдп рдХреЛ рдПрдХ рдирдП рдЧреЗрдо рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рддрддреНрдкрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреГрд╢реНрдпреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ Player рдХреЛ рдЧреЗрдо рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реНрдерд┐рддрд┐, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдиреАрдореЗрд╢рди, set_process ред


 func start(pos): set_process(true) #     Vector2(x, y) position = pos $AnimatedSprite.animation = "idle" 

рдЬрдм рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдПрдХ рдмрд╛рдзрд╛ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдореГрддреНрдпреБ рдХреА рдШрдЯрдирд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ set_process (false) рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ _process () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


 func die(): $AnimatedSprite.animation = "die" set_process(false) 

рдЯрдХрд░рд╛рд╡ рдЬреЛрдбрд╝рдирд╛


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


 signal pickup signal die 

Inspector рд╡рд┐рдВрдбреЛ ( Node рдЯреИрдм) рдореЗрдВ рд╕рдВрдХреЗрддреЛрдВ рдХреА рд╕реВрдЪреА рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рд╕рдВрдХреЗрддреЛрдВ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╕рдВрдХреЗрддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЕрдм рд╣рдо area_entered () рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рд╣реЛрдЧрд╛, рд╡реЗ рднреА рдкреНрд░рдХрд╛рд░ Area2D ред рд╣рдо рдХрдиреЗрдХреНрдЯ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ area_entered () рд╕рд┐рдЧреНрдирд▓ Connect рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ Connect Signal рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдиреЛрдб (рдкреНрд▓реЗрдпрд░) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдмрд╛рдХреА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВред


 func _on_Player_area_entered( area ): if area.is_in_group("coins"): #  emit_signal("pickup") area.pickup() 

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


рд╕рд┐рдХреНрдХрд╛ рджреГрд╢реНрдп


рдПрдХ рд╕рд┐рдХреНрдХреЗ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ "рдкреНрд▓реЗрдпрд░" рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдирд╛ рдерд╛, рд╡рд╣ рд╕рдм рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ AnimatedSprite рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдПрдиреАрдореЗрд╢рди (рд╣рд╛рдЗрд▓рд╛рдЗрдЯ) рд╣реЛрдЧрд╛ред Speed (FPS) рдХреЛ 14 рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо AnimatedSprite - 0,5, 0,5 рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЛ рднреА рдмрджрд▓ рджреЗрдВрдЧреЗред рдФрд░ CollisionShape2D рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рд╕рд┐рдХреНрдХреЗ рдХреА рдЫрд╡рд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдкреИрдорд╛рдиреЗ рдкрд░ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рддреН 2 рдбреА рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдлреЙрд░реНрдо рдкрд░ рдЙрдкрдпреБрдХреНрдд рдорд╛рд░реНрдХрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓ рджреЗрдВ, рдЬреЛ
рд╡реГрддреНрдд рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред



рд╕рдореВрд╣ рдиреЛрдбреНрд╕ рдХреА рд▓реЗрдмрд▓рд┐рдВрдЧ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕рдорд╛рди рдиреЛрдбреНрд╕ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред Player рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд┐рдХреНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдкрд░реНрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд┐рдХреНрдХреЛрдВ рдХреЛ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЪрд▓реЛ рдЗрд╕реЗ coins рдХрд╣рддреЗ рд╣реИрдВред Area2D рдиреЛрдб ("рд╕рд┐рдХреНрдХрд╛" рдирд╛рдо рдХреЗ рд╕рд╛рде) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдореВрд╣ рдмрдирд╛рддреЗ рд╣реБрдП Node -> Groups рдЯреИрдм рдореЗрдВ рдПрдХ рдЯреИрдЧ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред



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


 func pickup (): queue_free () 

рдирд┐рд╖реНрдХрд░реНрд╖


рдЕрдм рд╣рдо Main рджреГрд╢реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ: 2 рдбреА рдПрдбрд┐рдЯрд░ рдореЗрдВ рдорд╛рдЙрд╕ рдХреЗ Coin Player рдФрд░ Coin , рдФрд░ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рдореВрд╡рдореЗрдВрдЯ рдФрд░ рд╕рд┐рдХреНрдХрд╛ рдХреЗ рд╕рд╛рде рдЙрд╕рдХрд╛ рд╕рдВрдкрд░реНрдХ рджреГрд╢реНрдп (F5) рдХреЛ рд╢реБрд░реВ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЦреИрд░, рдореИрдВ рдпрд╣ рдХрд╣рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рд╣реВрдВ рдХрд┐ "рд▓рд╛рдЗрдХ рд╕рд┐рдХреНрдХреЗ" рдЧреЗрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЫреБрдЯреНрдЯреА рд▓реЗрдиреЗ рдФрд░ рд╕рднреА рдХреЛ рдЙрдирдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ, рддреЛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░рдХ рдХрд░реЗрдВ рдпрд╛ рдЖрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреЗрдЦреАрдВ, рддреЛ рдиреАрдЪреЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдХрд░ рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдХрдард┐рди рдФрд░ рдЖрд▓реЛрдЪрдирд╛рддреНрдордХ рд╣реЛрдиреЗ рд╕реЗ рдбрд░реЛ рдорддред рдЖрдкрдХреА "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧреА рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХреНрдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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


All Articles