2.2 Vadi varoni ar taustiņiem
Stundas uzdevums: Input Map cilnē pievieno taustiņus un izveido varoni, kuru vari vadīt ar WASD un bultiņām.
80 min plāns: Ievads (~10 min) · Input Map (~20 min) · spēlētāja scēna (~25 min) · kustības pārbaude (~20 min) · saglabāšana (~5 min).
Pirms sāc: turpini Platformer projektu no 2.1. MovementLab.tscn paliek kā eksperiments; spēlei izveidosim atsevišķus Player.tscn un Level1.tscn.
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.
Kur šodien klikšķināsi
Input Map cilnē katrai darbībai pievienosi taustiņus. Piemēram, move_left nozīmēs kustību pa kreisi gan ar A, gan ar ←.
Scene panelī veidosi Player ar divām daļām: Visual parāda varoni, bet CollisionShape2D nosaka, kur varonis atduras pret šķērsli. Pašus šķēršļus pievienosim 2.4 stundā.
Šodien varonis var kustēties četros virzienos. Vēlāk kustību uz augšu un leju aizstāsim ar lēcienu un krišanu. Godot paneļu un pogu atgādne.
1. uzdevums -
Input Map cilnē pievieno taustiņus
- Augšā atver Project → Project Settings un izvēlies cilni Input Map.
- Laukā Add New Action ieraksti
move_leftun spied Add. Sarakstā parādās jauna rinda. - Šīs rindas labajā pusē spied +. Laukā Listening for Input… nospied tastatūras A un apstiprini ar OK. Tajā pašā rindā vēlreiz spied + un pievieno ←.
- Tāpat pievieno pārējās tabulas rindas. Nosaukumus raksti precīzi, ar mazajiem burtiem.
jumpunrestartizmantosim vēlāk. - Izvērs rindas un pārbaudi piesaistītos taustiņus. Uzņem Input Map ekrānuzņēmumu, tad aizver iestatījumu logu.
| Darbība | Taustiņi |
|---|---|
move_left | A un ← |
move_right | D un → |
move_up | W un ↑ (eksperimentam) |
move_down | S un ↓ (eksperimentam) |
jump | Space |
restart | R |
Gatavs, kad: ir visas sešas darbības ar tabulā norādītajiem taustiņiem.
2. uzdevums -
Izveido spēlētāju un līmeni
- Izvēlies Scene → New Scene, tad Other Node. Meklē
CharacterBody2Dun spied Create. Ar F2 nosauc toPlayer. Ar Ctrl+S saglabā mapēSceneskāPlayer.tscn. - Atlasi
Player. Inspector sadaļā Transform atstāj Position =(0,0)un Scale =(1,1). - Ar + pievieno
Polygon2D, nosauc toVisual. Inspector sadaļā Data → Polygon ievadi četrus punktus tāpat kā 2.1 stundā:(-16,-24),(16,-24),(16,24),(-16,24). Laukā Color izvēlies gaišu krāsu. - Atkal atlasi
Playerun ar + pievienoCollisionShape2D. Inspector laukā Shape atver izvēlni → New RectangleShape2D. Noklikšķini uz izveidotās formas un laukā Size ievadi(32,48). Visual un CollisionShape2D laukam Position jābūt(0,0). - Atlasi
Player. Inspector atver Collision. Rindā Layer atstāj ieslēgtu tikai kvadrātiņu 2, rindā Mask — tikai 1. Laukā Motion Mode atstāj Grounded. - Ar labo peles pogu uz
Player→ Attach Script. Izvēlies C# un ceļures://Scripts/Player.cs. Spied Create, atver failu C# redaktorā un aizstāj saturu ar pilno kodu zemāk. Saglabā kodu un scēnu. - Izvēlies Scene → New Scene → 2D Scene, nosauc to
Level1un saglabāScenes/Level1.tscn. No FileSystem ievelcPlayer.tscnuzLevel1Scene panelī. Izvēlies pievienotoPlayerun Inspector sadaļā Transform → Position ievadi(80,570). - Nospied Build. FileSystem panelī ar labo peles pogu uz
Level1.tscn→ Set as Main Scene. Nospied augšējo Run Project (F5) pogu. Noklikšķini spēles logā un izmēģini W/A/S/D un bultiņas.
2.2 Player.cs — pilns fails salīdzināšanai
Lejupielādēt Player.cs. Atver esošo tāda paša nosaukuma failu un aizstāj tā saturu ar šo kodu.
using Godot;
public partial class Player : CharacterBody2D
{
[Export] public float Speed = 300.0f;
public override void _PhysicsProcess(double delta)
{
Vector2 direction = Vector2.Zero;
if (Input.IsActionPressed("move_left")) direction.X -= 1;
if (Input.IsActionPressed("move_right")) direction.X += 1;
if (Input.IsActionPressed("move_up")) direction.Y -= 1;
if (Input.IsActionPressed("move_down")) direction.Y += 1;
Velocity = direction.Normalized() * Speed;
MoveAndSlide();
}
}
Gatavs, kad: F5 palaiž Level1, varonis pārvietojas un apstājas, atlaižot taustiņus.
3. uzdevums -
Izmēģini taustiņus un maini Speed
- Palaid ar F5. Izmēģini A/D, W/S un bultiņas. Atlaižot taustiņus, varonim jāapstājas. Turot A un D reizē, tas nekustas pa labi vai pa kreisi.
- Apturi ar F8. Level1 cilnē atlasi
Playerun Inspector laukā Speed izmēģini150un450. Pēc katras izmaiņas palaid spēli un salīdzini. Beigās atjauno300. - Kodā uz laiku aizstāj
direction.Normalized() * Speedardirection * Speed. Saglabā, nospied Build un izmēģini D+S reizē: pa diagonāli varonis pārvietojas ātrāk. AtjaunoNormalized(), vēlreiz saglabā un nospied Build. Normalized()palīdz saglabāt vienādu ātrumu arī pa diagonāli.MoveAndSlide()jau ņem vērā laiku, tāpēcVelocityšeit papildus ardeltanereizina.- README.md ieraksti vadības taustiņus un vienu novērojumu par mainīto ātrumu. Ja varonis iziet ārpus ekrāna, apturi un palaid spēli no jauna.
Gatavs, kad: darbojas WASD un bultiņas, kodā atjaunots Normalized() un Speed ir 300.
Papildu uzdevums — skriešanas taustiņš
Atver Project → Project Settings → Input Map. Pievieno run rindu un ar + tai piesaisti Shift. Pirms Velocity piešķiršanas aprēķini float currentSpeed = Input.IsActionPressed("run") ? Speed * 1.5f : Speed; un kustībai izmanto currentSpeed. Pārbaudi arī diagonāli.
Ko sagatavo
Stundas mērķis: ir viena Player scēna un viens Player.cs, kuru papildināsi nākamajās stundās.
GitHub krātuvē jābūt:
Player.tscn,Level1.tscn,Player.cs, Input Map ekrānuzņēmums.- README.md: vadības taustiņi un novērojums par ātruma maiņu.
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 |
|---|---|
| F5 rāda veco eksperimentu | FileSystem ar labo pogu uz Level1.tscn → Set as Main Scene. |
| Varonis nekustas | Noklikšķini spēles logā. Project → Project Settings → Input Map pārbaudi nosaukumus un taustiņus. Scene panelī pie Player jābūt Player.cs skriptam. |
| Ļoti lēna kustība | Pirms MoveAndSlide ātrumu nedrīkst vēlreiz reizināt ar delta. |
| Forma nav redzama spēlē | Scene panelī atlasi Visual un pārbaudi Color un Data → Polygon. CollisionShape2D spēles laikā nav redzams. |