1.2 Scene Tree un Node sistēma
Stundas uzdevums: Izveidot redzamas Paddle un Ball scēnas, to instances un precīzu Pong mezglu koku.
80 min plāns: Ievads (~10 min) · raketes scēna (~20 min) · bumba un instances (~25 min) · struktūras pārbaude (~20 min) · saglabāšana (~5 min).
Pirms sāc: atver 1.1 izveidoto Pong projektu. Šodien veidosi redzamus objektus un to sadursmju formas. C# kodu vēl nepievieno; kustība sāksies 1.5 stundā.
Darba ritms: pēc katra uzdevuma saglabā un pārbaudi rezultātu. Kad projektam pievienots C# skripts, pirms palaišanas nospied Build. Kļūdu gadījumā sāc ar pirmo sarkano kļūdu, nevis nākamo uzdevumu.
Teorija: mezgls, scēna un instance
Mezgls ir viens objekts; scēna ir failā saglabāts mezglu koks. Instance ir šīs scēnas eksemplārs citā scēnā. Abi spēlētāji izmantos vienu Paddle.tscn, bet katrai instancei būs sava pozīcija un vēlāk sava vadība.
CharacterBody2D ir kustīgs sadursmju ķermenis, CollisionShape2D nosaka fizisko formu, Polygon2D nodrošina izskatu. Pats ķermenis nav redzams. Node2D tur objektus kopā. Bērnu pozīcijas ir attiecībā pret vecāku: pārvietojot raketes sakni, pārvietojas arī izskats un forma.
1. uzdevums -
Izveido atkārtoti izmantojamu raketi
- Izveido jaunu scēnu: Other Node →
CharacterBody2D. Sakni nosaucPaddle, saglabāres://Scenes/Paddle.tscn. Saknes Position = (0,0), Scale = (1,1), Motion Mode = Floating. - Pievieno bērnu
CollisionShape2D. Inspector Shape → New RectangleShape2D → Size =(24,120). Bērna Position = (0,0). Dzeltenajam brīdinājumam par tukšu formu jāpazūd. - Pievieno bērnu
Polygon2D, nosaucVisual. Inspector īpašībā Polygon ievadi četras virsotnes:(-12,-60), (12,-60), (12,60), (-12,60). Iestati gaišu Color; Position = (0,0). Forma un izskats tagad ir vienāda izmēra. - Paddle saknes Collision sadaļā noņem sākotnējos ķeksīšus un ieslēdz Layer tikai 2, Mask tikai 1. Šeit runa ir par ķeksīšu numuriem.
- Saglabā Paddle.tscn. 2D redaktorā pārbaudi, ka redzamais taisnstūris sakrīt ar sadursmes formu.
Gatavs, kad: Paddle.tscn satur vienu fizikas sakni un divus bērnus: Visual un CollisionShape2D.
2. uzdevums -
Izveido bumbu un saliec Main scēnu
- Jaunā scēnā izveido CharacterBody2D sakni
Ball, Motion Mode = Floating; saglabāres://Scenes/Ball.tscn. Saknes Position = (0,0), Scale = (1,1). - Ball pievieno CollisionShape2D ar RectangleShape2D Size (20,20). Pamatversijā bumba ir mazs kvadrāts, lai izskats un forma sakristu. Visual Polygon2D punkti:
(-10,-10), (10,-10), (10,10), (-10,10); izvēlies gaišu krāsu. - Ball saknei iestati Layer tikai 3, Mask 1 un 2. Tā noteiks sienas un raketes. Saglabā.
- Atver
Main.tscn. No FileSystem ievelc Paddle.tscn divas reizes tieši zem Main. Pārsauc instancesPaddleLeftunPaddleRight. Iestati Position attiecīgi(60,360)un(1220,360). - Ievelc arī Ball.tscn instanci ar nosaukumu
Ball, Position =(640,360). Main saknes Position saglabā (0,0). Saglabā visu un palaid F5.
Main (Node2D, Scenes/Main.tscn)
├── PaddleLeft (Scenes/Paddle.tscn instance)
├── PaddleRight (Scenes/Paddle.tscn instance)
└── Ball (Scenes/Ball.tscn instance)
Paddle / Ball (CharacterBody2D)
├── Visual (Polygon2D)
└── CollisionShape2D
Gatavs, kad: vienā logā redzamas abas raketes un bumba; tie vēl nekustas.
3. uzdevums -
Pārbaudi, ko maina scēnā un ko instancē
- Atver Paddle.tscn un nomaini Visual Color. Saglabā un atver Main: jaunā krāsa redzama abām raketēm, jo abas izmanto vienu scēnu.
- Pašā Main scēnā atlasītajai PaddleRight instancei nomaini Modulate krāsu. Pārbaudi, ka šī izmaiņa skar tikai labo raketi.
- Uz laiku Main scēnā PaddleLeft Position.Y maini no 360 uz 200. Pārvietojas gan attēls, gan forma; X paliek 60. Atjauno Y = 360. Izmaiņas veic instancei, nevis Paddle.tscn saknei.
- README.md izskaidro atšķirību starp mezglu, scēnu un instanci. Pievieno koka ekrānuzņēmumu un pārbaudi precīzus PaddleLeft, PaddleRight un Ball nosaukumus. Tie būs C# kodā izmantotie ceļi.
Gatavs, kad: proti nomainīt kopīgu izskatu un tikai vienas instances īpašību; visas sākuma pozīcijas ir atjaunotas.
Papildu uzdevums — pievieno savu emblēmu
Paddle.tscn pievieno vēl vienu Polygon2D bērnu ar savu mazu simbolu. Simbolam jāpaliek raketes robežās; galveno sadursmes formu nemaini. Pārbaudi, ka simbols parādās abām instancēm.
Ko sagatavo
Stundas mērķis: ir redzams Pong sākuma laukums ar vienotu mezglu struktūru.
GitHub krātuvē jābūt:
Scenes/Main.tscn,Scenes/Paddle.tscn,Scenes/Ball.tscn.- Palaistās scēnas un mezglu koka attēli; README.md skaidrojums par instanci.
Saglabā projekta iestatījumus, izveidotās scēnas un resursus; no 1.3 stundas arī C# skriptus un projekta failus (.csproj u.c.). .gitignore ieraksti .godot/, bin/ un obj/ katru savā rindā.
Kā iesniedz: veic commit un push. Skolotāja norādītajā vietā iesniedz GitHub krātuves saiti; README.md un pārbaudes pierādījumiem jābūt krātuvē.
Ja kaut kas nestrādā
| Pazīme | Ko pārbaudīt |
|---|---|
| Viss sakrauts kreisajā augšējā stūrī | Pozīcijas iestati Main scēnas instancēm. Paddle.tscn un Ball.tscn saknes paliek (0,0). |
| Objekts nav redzams | CollisionShape2D izskatu nerada; pārbaudi Visual punktus un krāsu. |
| Kopija nemainās kopā ar oriģinālu | Izmanto FileSystem ievilktu scēnas instanci, nevis atsevišķi pārzīmētu raketi; pārbaudi arī instances īpašību pārrakstījumus. |
| Vēlāk GetNode neatradīs objektu | Līdz tēmas beigām saglabā doto koku: PaddleLeft, PaddleRight un Ball ir tieši Main bērni. |