2.4 Platformas un savācamie priekšmeti
Stundas uzdevums: Izveido grīdu, trīs platformas un priekšmetus, kas pazūd, kad varonis tiem pieskaras.
80 min plāns: Ievads (~10 min) · grīda un platformas (~20 min) · priekšmeti (~25 min) · sadursmju pārbaudes (~20 min) · saglabāšana (~5 min).
Pirms sāc: atver savu Level1.tscn un izmanto 2.3 stundas Player.cs. Pagaidu _Ready() pārbaudei jābūt izdzēstai. Šodien vēl kustamies četros virzienos, lai ērti pārbaudītu visu laukumu.
Pēc izmaiņām: saglabā failus. Ja mainīji C# kodu, Godot augšējā labajā stūrī nospied Build (āmura ikona). Tad palaid spēli. Pirms nākamā uzdevuma izlabo pirmo parādīto kļūdu.
Ko izvēlēties un kur likt ķeksīšus
Grīdai un platformām izvēlies StaticBody2D: tas aptur varoni. Priekšmetiem izvēlies Area2D: varonis tiem var pieskarties un tos savākt.
Katram vajag divas daļas: Visual parāda izskatu, CollisionShape2D nosaka saskares vietu.
Scene panelī atlasi objektu un Inspector atver Collision. Rindā Layer atzīmē, kurai grupai objekts pieder. Rindā Mask — kuru grupu tas pamana. Klikšķini uz numurētajiem kvadrātiņiem pēc šīs tabulas; pārējos izslēdz.
| Ko atlasi Scene panelī | Layer | Mask |
|---|---|---|
| Ground, Platform1, Platform2, Platform3 | tikai 1 | neviens |
| Player | tikai 2 | tikai 1 |
| Pickup; vēlāk arī Finish un Hazard | tikai 3 | tikai 2 |
Priekšmetam jābūt ieslēgtam arī Monitoring. Tad tas pamanīs varoni. Šos iestatījumus maini Inspector panelī.
1. uzdevums -
Uzbūvē grīdu un trīs sasniedzamas platformas
- FileSystem → Scenes ar dubultklikšķi atver
Level1.tscn. Scene panelī atlasiLevel1, spied +, meklēStaticBody2Dun spied Create. Ar F2 nosauc toGround. Inspector sadaļā Transform → Position ievadi(640,660). - Atlasi
Groundun ar + pievienoCollisionShape2D. Inspector laukā Shape izvēlies New RectangleShape2D. Klikšķini uz izveidotās formas un laukā Size ievadi(1280,40). Pašam CollisionShape2D atstāj Position =(0,0). - Atkal atlasi
Groundun ar + pievienoPolygon2D, nosauc toVisual. Inspector sadaļā Data → Polygon ievadi četrus punktus:(-640,-20),(640,-20),(640,20),(-640,20). Laukā Color izvēlies redzamu krāsu. - Atlasi
Level1un tāpat izveido otruStaticBody2Dar nosaukumuPlatform1. Tā Position =(280,560), Scale =(1,1). Pievieno CollisionShape2D ar taisnstūra Size =(160,20)un Visual ar punktiem(-80,-10),(80,-10),(80,10),(-80,10). - Scene panelī ar labo peles pogu uz
Platform1→ Duplicate. Kopiju nosaucPlatform2un iestati Position =(480,470). Izveido vēl vienu kopijuPlatform3ar Position =(680,380). - Pēc kārtas atlasi grīdu, katru platformu un Player. Inspector sadaļā Collision atzīmē Layer un Mask pēc tabulas. Saglabā un nospied F5. Ar S mēģini iet grīdā, ar D — platformas sānos: varonim jāapstājas.
Ja maini kopijas izmēru: atlasi tās CollisionShape2D. Pie Shape atver izvēlni un spied Make Unique, tad maini Size. Tā pārējo kopiju formas paliks iepriekšējā izmērā. Pielāgo arī Visual punktus.
Gatavs, kad: varonis apstājas pie šķēršļiem un līmenī ir redzama grīda un trīs platformas.
2. uzdevums -
Izveido un savāc pirmo monētu
- Izvēlies Scene → New Scene → Other Node, meklē
Area2Dun spied Create. Nosauc toPickupun saglabāScenes/Pickup.tscn. - Atlasi
Pickupun ar + pievienoCollisionShape2D. Inspector laukā Shape izvēlies New CircleShape2D. Klikšķini uz izveidotās formas un iestati Radius =12. - Atkal atlasi
Pickupun pievienoPolygon2Dar nosaukumuVisual. Sadaļā Data → Polygon ievadi četrus punktus:(0,-12),(12,0),(0,12),(-12,0). Laukā Color izvēlies dzeltenu krāsu. - Atlasi
Pickup. Inspector sadaļā Collision ieslēdz tikai Layer 3 un Mask 2. Pārbaudi, ka Monitoring ir ieslēgts. - Ar labo peles pogu uz
Pickup→ Attach Script. Izvēlies C#, ceļures://Scripts/Pickup.csun spied Create. Aizstāj faila saturu ar kodu zemāk. Tas jau apstrādā pieskaršanos; Godot Signals panelī nekas papildus nav jāsavieno. - Saglabā failu un scēnu, nospied Build. Atver
Level1cilni. No FileSystem ievelcPickup.tscnuzLevel1Scene panelī. Pārdēvē pievienoto objektu parCoin1. Inspector iestati Position =(150,600)un laukā Type izvēlies Coin. - Saglabā, nospied F5 un pieved varoni pie monētas. Tai jāpazūd. Apakšējā Output panelī jāparādās 1 punktam. Atgriezies tajā pašā vietā: otru punktu tā nedod.
2.4 Pickup.cs — pilns fails salīdzināšanai
Lejupielādēt Pickup.cs. Atver esošo tāda paša nosaukuma failu un aizstāj tā saturu ar šo kodu.
using Godot;
public partial class Pickup : Area2D
{
[Export] public PickupType Type = PickupType.Coin;
private bool collected = false;
public override void _Ready()
{
BodyEntered += OnBodyEntered;
}
private void OnBodyEntered(Node2D body)
{
if (collected || body is not Player player || !player.IsActive)
return;
collected = true;
player.OnPickup(Type);
QueueFree();
}
}
Gatavs, kad: monēta pazūd, kad varonis tai pieskaras, un dod tieši 1 punktu.
3. uzdevums -
Kopē priekšmetus un izvēlies Type
- Level1 Scene panelī ar labo peles pogu uz
Coin1→ Duplicate. Katru kopiju pārdēvē un Inspector laukos Position un Type ievadi tabulas vērtības. Maini izvēlēto kopiju Level1 cilnē. - Lai atšķirtu
GemunKey, atlasi tos pa vienam un Inspector sadaļā Visibility → Modulate izvēlies atšķirīgas krāsas. - Palaid ar F5 un savāc visus priekšmetus. Output jāparādās 9 punktiem un
atslēga: True. Šodien augšējos priekšmetus vēl sasniedz ar W. - Apturi spēli. Atlasi
Coin1, sadaļā Collision → Mask izslēdz 2 un palaid vēlreiz. Monēta vairs nepazūd. Apturi un ieslēdz Mask 2 atpakaļ. - Tāpat izmēģini Player laukā Mask izslēgt 1: varonis iet cauri platformām. Apturi un ieslēdz Mask 1 atpakaļ. Saglabā un vēlreiz pārbaudi gan platformas, gan savākšanu.
| Nosaukums Scene panelī | Position | Type |
|---|---|---|
| Coin2 | (280,525) | Coin |
| Gem | (480,435) | Gem |
| Coin3 | (600,600) | Coin |
| Coin4 | (1050,600) | Coin |
| Key | (680,345) | Key |
Gatavs, kad: ir pieci punktu priekšmeti un atslēga; visi Mask ķeksīši ir atjaunoti un savākšana darbojas.
Papildu uzdevums — izveido savu priekšmeta simbolu
Atver Pickup.tscn, atlasi Visual un Inspector sadaļā Data → Polygon maini punktus. Atstāj Pickup un CollisionShape2D savās vietās. Pārbaudi, ka redzamais simbols un savākšanas zona atrodas vienā vietā.
Ko sagatavo
Stundas mērķis: varonis atduras pret platformām, savāc punktus un atslēgu.
GitHub krātuvē jābūt:
Pickup.tscn,Pickup.csun papildinātsLevel1.tscn.- Video vai attēli ar sadursmi un savākšanas rezultātu; README.md skaidrojums par abām Mask pārbaudēm.
Saglabā visu projektu: project.godot, .csproj, scēnas, skriptus un izmantotos attēlus. .gitignore ieraksti .godot/, bin/ un obj/ katru savā rindā.
Kā iesniedz: saglabā izmaiņas Git un nosūti tās uz GitHub tāpat kā 1. tēmā (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 |
|---|---|
| Monēta nepazūd | Scene panelī atlasi monētu: Inspector pārbaudi Collision → Mask 2 un Monitoring. Zem monētas jābūt CollisionShape2D ar Shape un Pickup.cs jāatbilst dotajam failam. |
| Pazūd, bet punkti nepieaug | Atver Output un pārbaudi ziņas. Salīdzini Pickup.cs ar pilno kodu; tajā jābūt player.OnPickup(Type). |
| Nav Type izvēlnes | Saglabā Pickup.cs, nospied Build un Scene panelī atlasi Coin1, nevis Visual vai CollisionShape2D. |
| Sadursme strādā tikai vienai kopijai | Atlasi nestrādājošo kopiju un pārbaudi Collision → Mask. Zem tās atlasi CollisionShape2D un pārbaudi Shape izmēru. |