Sari la conținut
EduCamp
Godot / Jocuri Începător Godot de la zero · partea 4

Coliziuni și pereți

Închizi zona de joc cu patru pereți, ca personajul să nu mai iasă din ecran. Înveți diferența dintre imagine și formă fizică.

50 minute Nivel: Începător EduCamp

Nume și prenume: ................................................    Clasa: .................    Data: .......................

La finalul fișei, elevul poate:

  • explice diferența dintre CharacterBody2D și StaticBody2D
  • construiască pereți cu StaticBody2D și CollisionShape2D
  • distingă între ce se vede și ce se ciocnește
  • folosească Visible Collision Shapes pentru depanare

Ai nevoie de:

  • Godot 4
  • Proiectul ColecteazaMonede, cu personajul care se mișcă din fișa 3

Personajul tău se mișcă, dar iese din ecran și se pierde. Îi construim o zonă închisă.

1. Ce este o coliziune

O coliziune apare când formele fizice a două corpuri se întâlnesc.

Până acum ai folosit un singur tip de corp. Acum îl întâlnești pe al doilea:

TipulCe faceExemple
CharacterBody2Dse mișcă, e controlat prin codjucătorul, un inamic
StaticBody2Dnu se mișcă niciodată, dar oprește ce se lovește de elpereți, sol, obstacole

Peretele va arăta așa:

WallTop [StaticBody2D]
└── CollisionShape2D
    └── RectangleShape2D

2. Primul perete

Fereastra jocului are 1152 × 648 pixeli. Construim un chenar gros de 20 de pixeli.

  1. Deschide main.tscn și selectează nodul Main.
  2. Ctrl+AStaticBody2DCreate. Apasă F2 și scrie WallTop.
  3. Cu WallTop selectat, Ctrl+ACollisionShape2DCreate.
  4. La Shape alege New RectangleShape2D.
  5. Deschide Shape și la Size scrie 1152 pentru x și 20 pentru y.
  6. Selectează WallTop, deschide Transform și pune Position la x = 576, y = 10.

Rulează cu F5 și du personajul în sus. Se oprește.

3. Ceilalți trei pereți

Nu construim de la zero. Duplicăm.

  1. Selectează WallTop și apasă Ctrl+D. Se creează o copie, cu tot cu forma din ea.
  2. Redenumește copia WallBottom și pune Position la x = 576, y = 638.

Repetă pentru pereții laterali, care au forma întoarsă:

  1. Duplică din nou, redenumește WallLeft. Selectează CollisionShape2D-ul lui și pune la Size valorile 20 și 648. Apoi la WallLeft pune Position x = 10, y = 324.
  2. Duplică WallLeft, redenumește WallRight, Position x = 1142, y = 324.

Tabelul complet, ca să verifici:

PereteleSizePosition
WallTop1152 × 20(576, 10)
WallBottom1152 × 20(576, 638)
WallLeft20 × 648(10, 324)
WallRight20 × 648(1142, 324)

Salvează cu Ctrl+S și rulează cu F5. Du personajul spre fiecare margine: se oprește de fiecare dată.

4. Vezi ce nu se vede

Pereții sunt invizibili. Când ceva nu funcționează, ai nevoie să-i vezi.

În timpul rulării, în editor: Debug → Visible Collision Shapes, apoi rulează din nou.

Godot desenează toate formele de coliziune peste joc, cu albastru transparent. Vezi imediat dacă un perete e prea scurt, dacă e mutat greșit sau dacă forma personajului e mult mai mare decât imaginea lui.

Exerciții

🔑 Rezolvare

Imaginea are 128 de pixeli, micșorată cu Scale = 0.2, deci apare la circa 26 de pixeli. Forma de 26 × 26 se potrivește bine.

Dacă forma e mult mai mare, personajul se oprește la distanță de perete și pare că „plutește”. Dacă e mult mai mică, intră cu jumătate de corp în perete.

🔑 Rezolvare

Personajul se oprește, dar nu se blochează: dacă îl împingi pe diagonală, alunecă de-a lungul marginii obstacolului în loc să stea pe loc.

Asta face partea „slide” din move_and_slide(). Fără ea, jocurile ar părea lipite: te-ai opri complet la orice atingere a unui perete.

Obstacolul îl poți păstra sau șterge — nu strică restul jocului.

🔑 Rezolvare
ObiectulSe vede?Oprește personajul?
WallTopNUDA
Sprite2D singurDANU
PlayerDADA

Concluzia: ca să obții un obiect solid și vizibil, ai nevoie de amândouă — un corp cu CollisionShape2D și un Sprite2D. Godot nu le leagă automat.

🔑 Rezolvare

Doar aspectul. Forma de coliziune a rămas exact aceeași — personajul se oprește în același loc, indiferent cum arată imaginea.

Dacă imaginea pe care ai întins-o nu se suprapune perfect peste formă, se vede clar diferența: personajul pare că se oprește „în aer” sau intră în perete. De aceea, într-un joc adevărat, imaginea și forma se aliniază cu grijă.

Ce ai învățat

  • StaticBody2D este corpul care nu se mișcă: pereți, sol, obstacole.
  • Poziția unui nod este centrul lui, nu colțul.
  • Ctrl+D duplică un nod cu tot cu copiii lui.
  • Ce se vede și ce se ciocnește sunt lucruri separate.
  • Debug → Visible Collision Shapes îți arată formele invizibile, când depanezi.

Zona de joc e închisă. Urmează ce dă sens jocului: monedele.

Autor: EduCamp Actualizat: 16 august 2026