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

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реБрдП рдердХ рдЧрдП рд╣реЛрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЦреЗрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкрд╣рд▓реБрдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬреИрд╕реЗ рд╕рд┐рдХреНрдХреЛрдВ рдХреЗ рдЦреЗрд▓ рдХрд╛ рдЙрджрд╛рд╣рд░рдг? рд╕рдм рдХреБрдЫ "рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ" рдФрд░ "рд╕реНрд╡рд╕реНрде" рдПрдЬреЗрдВрдбреЗ рдкрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рдЧреЗрдо рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреА рд╢реБрд░реБрдЖрдд рдЖрдк рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдЧреЗрдореЛрдЯ рдЗрдВрдЬрди рдкрд░ "рд▓рд╛рдЗрдХ рд╕рд┐рдХреНрдХреЗ" рдЧреЗрдо рдмрдирд╛рдирд╛ред рднрд╛рдЧ 1 , рд▓реЗрдХрд┐рди рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рд╣реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрддрдиреА рд╕рд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдереА, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдПрдВрдЧреЗред рдЪрд▓реЛ "gamedev" рд╢реБрд░реВ рдХрд░реЛ!


рджреГрд╢реНрдп "рдореБрдЦреНрдп"


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


ColorRect ("рдкреГрд╖реНрдарднреВрдорд┐") - рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рднрд░реЗрдВ;
Player - "рдкреНрд▓реЗрдпрд░" рдСрдмреНрдЬреЗрдХреНрдЯ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ Player рд╕реАрди рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣рддрд╛ рд╣реВрдВ;);
Node ("рдХрдВрдЯреЗрдирд░") - рд╕рд┐рдХреНрдХреЛрдВ рдХреЗ рдЕрд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП "рдХрдВрдЯреЗрдирд░";
Position2D ("рдкреНрд▓реЗрдпрд░рд╕реНрдЯрд╛рд░реНрдЯ") - рдЦреЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ "рдкреНрд▓реЗрдпрд░" рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ;
Timer ("GameTimer") - рд╕рдордп рд╕реАрдорд╛ рдХрд╛рдЙрдВрдЯрд░;


ColorRect рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдкрд░ рдЪрдпрди рдХрд░реЗрдВ: Layout -> Full Rect рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Layout -> Full Rect рдЦрдВрдб (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдЕрдХреНрд╕рд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ Layout рд▓рд┐рдП Layout рд╕реВрдЪреА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди Layout ), рдЗрд╕ рдиреЛрдб рдХреЗ рд▓рд┐рдПред рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ "рд░рдВрдЧ" рд╡рд╛рдВрдЫрд┐рдд рд░рдВрдЧ рднрд░реЗрдВред рдЖрдк TextureRect рд╕рд╛рде рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рднрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ "рдмрдирд╛рд╡рдЯ" рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред Position2D , "рд╕реНрдерд┐рддрд┐" рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ, "x" рдФрд░ "y" рдХреЗ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ - рдпрд╣ Player рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдмреЗрд╢рдХ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдорджрдж рд╕реЗ, рдЖрдк рд╕реАрдзреЗ Player рд╣реА рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧ рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рди рдХреЗрд╡рд▓ рдЧреЗрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╕реАрдЦрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ "рдЧреЛрдбреЛрдЯ" рдХрд╛ рднреА рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЕрддрд┐рд░реЗрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред


"рдореБрдЦреНрдп" рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ


Node рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ:


 extends Node #PackedScene        export (PackedScene) var Coin export (int) var playtime var level #  var score # var left_time #     var window_size #   var playing = false #    

рдЧреБрдг "рд╕рд┐рдХреНрдХрд╛" рдФрд░ "рдкреНрд▓реЗрдЯрд╛рдЗрдо" Inspector рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред "Coin.tscn" рджреГрд╢реНрдп рдХреЛ "Coin" рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ рдФрд░ "playtime" рдХреЛ "40" (рд╕реЗрдХрдВрдб рдореЗрдВ рдЧреЗрдо рдХреА рдЕрд╡рдзрд┐) рд╕реЗрдЯ рдХрд░реЗрдВред


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


 func _ready(): randomize() #        window_size = get_viewport().get_visible_rect().size #    $Player.window_size = window_size #    "" $Player.hide() #   

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Player рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп, "$" рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ "рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░" рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдп рдореЗрдВ рдиреЛрдб рдХреЛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, get_node("Node1") рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд╖рд┐рджреНрдз рдирд╣реАрдВ рд╣реИ)ред рдпрджрд┐ "Node1" рдореЗрдВ "Node2" рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - $Node1/Node2 ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЧреЛрдбреЛрдЯ рдореЗрдВ рдСрдЯреЛрдлрд┐рд▓ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЙрдкреЗрдХреНрд╖рд┐рдд рди рдХрд░реЗрдВред рдиреЛрдбреНрд╕ рдХреЗ рдирд╛рдо рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - $"My best Node1" ред


рдирдпрд╛ рдЦреЗрд▓


рдПрдХ рдирдпрд╛ рдЧреЗрдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрдЯрди рджрдмрд╛рдХрд░ред


 func new_game(): playing = true #   level = 1 score = 0 time_left = playtime $Player.start($PlayerStart.position) $Player.show() $GameTimer.start() #    spawn_coins() #  

рдлрд╝рдВрдХреНрд╢рди "рдкреНрд░рд╛рд░рдВрдн ()" рдЬрд┐рд╕рдХрд╛ рддрд░реНрдХ $PlayerStart.position рд╣реИ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд╝рдВрдХреНрд╢рди "spawn_coins ()" рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЦреЗрд▓ рдХреЗ рдореИрджрд╛рди рдкрд░ рд╕реНрдкреЙрди рд╕рд┐рдХреНрдХреЛрдВ рдХреЗ рд▓рд┐рдПред


 func spawn_coins(): for i in range(4 + level): var c = Coin.instance() $CoinContainer.add_child(c) c.window_size = window_size c.position = Vector2(rand_range(0, window_size.x), rand_range(0, window_size.y)) 

range(4 + level) рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рд╢реНрд░реЗрдгреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рд╕рд┐рдХреНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрддрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдПрдХ рд╕реАрдорд╛ рдореЗрдВ рдПрдХ рддрд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛ рддрд░реНрдХ рдпрд╛ рддреАрди рддрд░реНрдХ (рддреАрд╕рд░рд╛ рддрд░реНрдХ рдПрдХ рд╕рд░рдгреА рдЪрд░рдг рд╣реЛрдЧрд╛)ред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо "рд╕рд┐рдХреНрдХрд╛" рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рдХреНрдХрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рднреВрд▓ рдирд╣реАрдВ рдЧрдП рд╣реИрдВ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдЪреБрдХреЗ рд╣реИрдВ, PackedScene рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдирдпрд╛ рдиреЛрдб ( instance() рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕реЗ add_child() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд▓рд╛, рд╣рдо рд╕рд┐рдХреНрдХреЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдкреЙрди рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЧрд▓рддреА рд╕реЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдкреАрдЫреЗ рджрд┐рдЦрд╛рдИ рди рджреЗрдВ, рдФрд░ рдлрд┐рд░ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдПрдХ рд╕реНрдерд┐рддрд┐ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдереЛрдбрд╝рд╛ рд╕реМрдВрджрд░реНрдпрд╡рд╛рджреА рд░реВрдк рд╕реЗ рдордирднрд╛рд╡рди рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд┐рдВрдЧрд▓рдЯрди рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдХрд░ рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред


рдПрдХрд╛рдХреА рд╡рд╕реНрддреБ


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


рдзреНрдпрд╛рди рджреЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЕрдкрдиреА рд╡реИрд╢реНрд╡рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИ, рдЬрд┐рд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд╣рдо рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк ProjectSettings.get_setting(name) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ name рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ name рд╣реИред

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


 extends Node func rand(): var rrand = Vector2(rand_range(40, 760), rand_range(40, 540)) return rrand #   


рдЕрдЧрд▓рд╛, рдЗрд╕реЗ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ: Project -> Project Settings -> AutoLoad ред рд╣рдо рдЕрдкрдиреА рдирдИ рдмрдирд╛рдИ рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "_G", рдФрд░ "spawn_coins ()" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордп рд╕реАрдорд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдЗрд╕реЗ рдирд┐рдореНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:


  ... c.position = _G.rand() 

рдЕрдм рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ "_ready ()" рдмреНрд▓реЙрдХ рдореЗрдВ "spawn_coins ()" рд░рдЦрдХрд░ рдФрд░ F5 рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдХрд░ рдХреНрдпрд╛ рд╣реБрдЖред рдФрд░ рдореБрдЦреНрдп рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ Main.tscn рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ, рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдиреЗ рдЪреБрдирдиреЗ рдореЗрдВ рдЧрд▓рддреА рдХреА рд╣реИ, рддреЛ рдЖрдк рдореБрдЦреНрдп рджреГрд╢реНрдп рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: General -> Run -> MainScene ред рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдлрд┐рд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред


рдХрд┐рддрдиреЗ рд╕рд┐рдХреНрдХреЗ рдмрдЪреЗ рд╣реИрдВ?


рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рд╕рд┐рдХреНрдХреЗ рдмрдЪреЗ рд╣реИрдВ, рдЙрд╕реЗ 5 рд╕реЗрдХрдВрдб рдХреЗ рд╕рдордп рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ "рдмреЛрдирд╕" рджреЗрдВ рдФрд░ рдлрд┐рд░ рд╕рд┐рдХреНрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдлреИрд▓рд╛рдПрдВред


 func _process(delta): #   ?     ? if playing and $CoinContainer.get_child_count() == 0: #    level += 1 # ""   time_left += 5 #  spawn_coins() 

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕


рд╣рдорд╛рд░реЗ рдкреВрд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ: рд╕реНрдХреЛрд░ рдЗрдВрдбрд┐рдХреЗрдЯрд░, рд╡рд░реНрддрдорд╛рди рд╕реНрддрд░, рд╕рдордп, рдЧреЗрдо рдХрд╛ рдирд╛рдо рдФрд░ рдПрдХ рдмрдЯрди рдЬреЛ рдЧреЗрдо рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред CanvasLayer рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп ( HUD.tscn ) рдмрдирд╛рдПрдВ (рдЖрдкрдХреЛ рдЦреЗрд▓ рдореИрджрд╛рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдБ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реВрдЪреА рдФрд░ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдЗрдВрдЬрди рдХреЗ рдЗрд╕ рдкрд╣рд▓реВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдЬреНрдЬреНрд╡рд▓ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдордиреЛрджрд╢рд╛ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред



рдЧреЛрдбреЛрдЯ рдореЗрдВ рддрдерд╛рдХрдерд┐рдд "рдирд┐рдпрдВрддреНрд░рдг рдиреЛрдб" рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ "рдХрдВрдЯреНрд░реЛрд▓ рдиреЛрдбреНрд╕" рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЬреНрд╡рд▓рдВрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐ MarginContainer , рдЬрд┐рд╕реЗ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Layout -> Top Wide рдХреА рдорджрдж рд╕реЗ Layout -> Top Wide рдЗрд╕реЗ рд╡рд┐рдВрдбреЛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдлреИрд▓рд╛рдПрдВрдЧреЗ, рдФрд░ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ, Margin рд╕реЗрдХреНрд╢рди рдореЗрдВ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рдЗрдВрдбреЗрдВрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ: рд▓реЗрдлреНрдЯ, рдЯреЙрдк рдФрд░ рд░рд╛рдЗрдЯред MarginContainer рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рддреАрди рдЪрд╛рдЗрд▓реНрдб Label рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП: ScoreLabel , LevelLabel рдФрд░ TimeLabel ред рдЙрдиреНрд╣реЗрдВ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред Align рдЧреБрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЙрдиреНрд╣реЗрдВ рдмрд╛рдИрдВ рдУрд░, рдХреЗрдВрджреНрд░ рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВред рдпрд╣ рдПрдХ рдФрд░ Label ( Messagelabel ) рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕реЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд░рдЦрдХрд░, рд╕рднреА Layout , рдФрд░ рдмрдЯрди рдХреЛ рдереЛрдбрд╝рд╛ рдиреАрдЪреЗ рд░рдЦреЗрдВ ( StartButton )ред



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


 extends CanvasLayer signal start_game func update_score(value): $MarginContainer/ScoreLabel.text = str(value) func update_level(value): if len(str(value)) == 1: $MarginContainer/TimeLabel.text = "0: 0" + str(value) else: $MarginContainer/TimeLabel.text = "0: " + str(value) func update_timer(value): $MarginContainer/TimeLabel.txt = str(value) 

MessageLabel рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреА рдкрд╛рда рдХреЛ рдЫреЛрдЯреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд╛рдЗрдорд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ Timer рдиреЛрдб рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрд╕рдХрд╛ рдирд╛рдо MessageTimer рдмрджрд▓реЗрдВред рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ, рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп 2 рд╕реЗрдХрдВрдб рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ One Shot рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рдЪреБрдиреЗрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдорд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЪрд▓рддрд╛ рд╣реИред


 func show_message(text): $MessageLabel.text = text $MessageLabel.show() $MessageTimer.start() 

timeout() рд╕рд┐рдЧреНрдирд▓ рдХреЛ "MessageTimer" рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:


 func _on_MessageTimer_timeout(): $MessageLabel.hide() 

StartButton рд▓рд┐рдП "рдиреЛрдб" рдЯреИрдм рдкрд░, pressed() рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдЬрдм рдЖрдк StartButton рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕реЗ MessageLabel рд╕рд╛рде рдПрдХ рд╕рд╛рде рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рдореБрдЦреНрдп рджреГрд╢реНрдп рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рднреЗрдЬреЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЦрд┐рд╕рдХрд╛рдХрд░ - "new_game ()"ред рд╣рдо рдЗрд╕реЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рдХреЙрд▓рд┐рдВрдЧ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Text рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдмрдЯрди рдХреЛ рди рднреВрд▓реЗрдВред


 func _on_StartButton_pressed(): $StartButton.hide() $MessageLabel.hide() emit_signal("start_game") 

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


 func show_game_over(): show_message("Game Over") yield($MessageTimer, "timeout") $StartButton.show() $MessageLabel.text = "LIKE COINS!" $MessageLabel.show() 

рд╕рдорд╛рдкреНрдд?


HUD рдФрд░ Main рдмреАрдЪ рдлреАрдбрдмреИрдХ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред HUD рджреГрд╢реНрдп рдХреЛ рдореБрдЦреНрдп рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ timeout() рдорд╛рдзреНрдпрдо рд╕реЗ GameTimer рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдореБрдЦреНрдп рджреГрд╢реНрдп рдкрд░ рдЬреЛрдбрд╝рдХрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:


 func _on_GameTimer_timeout(): time_left -= 1 #  $HUD.update_timer(time_left) #   if time_left <= 0: game_over() #     

рдлрд┐рд░ pickup() рдФрд░ die() рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред


 func _on_Player_pickup(): score += 1 $HUD.update_score(score) func _on_Player_die(): game_over() 

рдЦреЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдХрдИ рдФрд░ рдЪреАрдЬреЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВ, рдФрд░ рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред


 func game_over(): playing = false $GameTimer.stop() for coin in $CoinContainer.get_children(): coin.queue_free() $HUD.show_game_over() $Player.die() 

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЧреЗрдо рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╢реЗрд╖ рд╕рд┐рдХреНрдХреЛрдВ рдХреЛ show_game_over() рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╢реЗрд╖ рд╕рд┐рдХреНрдХреЛрдВ рдХреЛ show_game_over() рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ show_game_over() рдХреЛ HUD рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдиреАрдореЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ рдФрд░ Player рдиреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрдирд╛ рд╣реИред


рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ StartButton рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ new_game() рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред HUD рдиреЛрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рди рд╕рдВрд╡рд╛рдж рдореЗрдВ рдЖрдкрдХреЛ Make Function to Off рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рдирдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛) рдФрд░ Method In Node рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ - new_game ред рдпрд╣ рдПрдХ рдирдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд┐рдЧреНрдирд▓ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред


рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ - _ready() рдлрд╝рдВрдХреНрд╢рди рд╕реЗ new_game() рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ new_game() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ


 ... $HUD.update_score(score) $HUD.update_timer(time_left) 

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

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


All Articles