Sunteți pe pagina 1din 19

Curs Gaming

Lecția 6
1. Acțiunile mouse-ului
2. Forțe de mișcare
3. Cronometru
4. Numere aleatorii
Conceptele pe care le vom învăța se vor regăsi ca cerințe ale aplicației
acestei lecții.

Creați un joc nou: File – New – HTLM5 – Empty project – Create the
new project

Creați obiectul turetă:


Jucătorul va controla o turetă pentru a-i distruge pe dușmani. Faceți
un click dreapta pe centrul scenei gri în GDevelop și alegeți Adaugă un nou
obiect. Se deschide o fereastră, astfel că puteți alege tipul de obiect – vom
alege cum un obiect de tip Sprite.
Primul lucru de făcut este de a adăuga imaginea turetă obiectului
tocmai adăugat: click dreapta pe zona alba din partea de jos a ferestrei și
alegeți Adăugați o imagine dintr-un fișier. Imaginea se află în folderul “Fisiere
GDev” de pe Desktop, în sub-folderul ”Fisiere lectia 6”.
Puteți închide apoi editorul de imagine pentru obiectul nostru, astfel
încât să se întoarcă la editorul scenă. Obiectul este afișat în punctul în care ați
făcut click dreapta.

Puteți muta obiectul trăgângu-l cu mouse-ul la poziția dorită de voi.


Numele obiectului pe care l-am adăugat vrem să fie Turret.
Vom crea evenimentele folosite pentru a anima jocul
nostru. În primul rând, tureta trebuie întoarsă spre mouse-ul jucătorului.
Evenimentul este creat cu o listă goală de condiții (în partea stângă) și
o listă goală de acțiuni (în partea dreaptă). Trebuie să adăugăm o acțiune
pentru evenimentul nostru:

Prima acțiune va orienta tureta spre mouse-ul jucătorului: În


fereastră, alegeți acțiunea All objects – Angle – Rotate toward position.
Când este selectată, în partea dreaptă a ferestrei se arată numele
acțiunii, precum și parametrii. Adaugăm primul parametru prin introducerea
obiectului pentru care dorim să se întâmple acțiunea, adică pentru obiectul
Turret (puteți, de asemenea, să faceți click pe butonul de lângă parametru
pentru a obține o listă a obiectelor disponibile). Pentru următorii parametrii,
introduceți MouseX() și MouseY(), astfel încât obiectul să se întoarcă spre
poziția mouse-ului jucătorului. În cazul în care jocul va fi lansat, aceste două
expresii, adică valoarea coordonatelor X și Y vor fi înlocuite cu valorile X și Y
ale mouse-ului.
MouseX() și MouseY() sunt două dintre cele câteva
funcții disponibile pentru parametrii pe care îi putem adăuga evenimentelor
noastre. Faceți clic pe OK. Se adaugă acțiunea la eveniment. Pentru că nu
există nici o condiție, acțiunea va fi repetată de fiecare dată când scena jocului
este reactualizată (aproximativ 60 de ori pe secundă). Tureta va fi astfel
orientată întotdeauna spre mouse.

Tureta trebuie să fie capabilă să tragă cu gloanțe


Jucătorul trebuie să fie capabil de a trage cu gloanțe în dușmani. În
primul rând, avem nevoie de un obiect Bullet: În lista de obiecte din dreapta
- Adăugați un obiect. Alege un obiect Sprite, setând numele Bullet.
Apoi, faceți un dublu click pe obiect pentru a-i edita înfățișarea.
Adăugați o imagine obiectului: click dreapta pe zona albă din partea de jos –
adăugăm imaginea Bullet din folderul ”Fisiere GDev”. de pe Desktop, din sub-
folderul ”Fisiere lectia 6”.
Adăugăm un nou eveniment. Prima acțiune va fi aceea de a crea un
obiect, care este disponibilă in tab-ul All objects – Objects – Create an object.
Primul parametru trebuie să fie Bullet, pentru a crea un obiect Bullet.
Ceilalți parametrii sunt poziția turetei: adăugăm Turret.X() și Turret.Y().
Adaugăm o altă acțiune, după această primă
acțiune(Nu creați un alt eveniment!). De data aceasta, alegeți acțiunea All
objects - Displacement - Add a force (Angle).
GDevelop oferă un sistem de forțe creat în mediul de dezvoltare care
permite obiectelor să se deplaseze cu ușurință. Această acțiune va fi utilizată
pentru a orienta glonțul în direcția mouse-ului atunci când tragem. Ca prim
parametru, introduceți Bullet pentru a se muta glonțul care a fost creat în
ultima acțiune. Introduceți apoi Turret.Direction() în al doilea parametru,
pentru a utiliza direcția turretei. Pentru al treilea parametru, introduceți 400
pentru că glonțul se va muta cu o viteza de 400 de pixeli pe secundă. În cele
din urmă, introduceți 1 în ultimul parametru, astfel cq glonțul să-și mențină
mișcarea după momentul în care a fost creat.
Cele 2 acțiuni ale noastre trebuie să fi executate
numai în cazul în care jucătorul vrea să tragă (de exemplu: Apăsând butonul
din stânga al mouse-ului).
Pentru a face acest lucru, adăugați o condiție evenimentului: din tab-
ul Mouse - A button is pressed. Alegeți parametrul Left (sau faceți click pe
butonul din dreapta parametrului pentru a selecta Left button) și închideți
fereastra făcând click pe Ok. Condiția este acum adaugă evenimentului.
Dacă dați Preview acum, veți vedea că avem două probleme: Glonțul
tras este prea rapid și apare la locul de origine a obiectului, ceea ce nu este
foarte realist.
Pentru a rezolva prima problemă, vom folosi un timer: Adaugăm o
condiție ultimului eveniment creat. Alege Timers - Timer's value și introduceți
0.25 în primul parametru și "FireRate" în al doilea parametru, care este
numele timer-ului utilizat (Nu uitați ghilimelele din jurul numelui
cronometrului!).
Apoi, se adaugă acțiunea Timer - Reset a timer,
în același eveniment, cu "FireRate" ca parametru(din nou, folosiți de
ghilimelele!). Această pereche de condiție și acțiune va asigura că acțiunile
folosite pentru a trage glonțul se vor repeta atunci când cel puțin 0.25
secunde sunt scurse de la ultima crearea bullet (ultima tragere cu un glonț):

Trebuie să ne asigurăm acum că gloanțele sunt trase de la țeava


turetei. Faceți un dublu click pe obiectul Turret în lista obiectelor pentru a
edita obiectul. Apoi, în bara de instrumente din partea de sus a ferestrei,
faceți click pe al doilea instrument pentru a deschide o fereastră care conține
lista punctelor disponibile pentru obiect: În mod implicit, există doar originea
și centrul obiectului.
Adăugați un punct, făcând click pe + în bara de
instrumente a ferestrei pentru puncte. Denumiți noul punct Canon. Atunci
când este creat și redenumit, asigurați-vă că este selectat în listă (pur și simplu
faceți un click pe el) și apoi faceți click pe imagine pentru a schimba poziția
acestui punct creat:

Puteți închide acum fereastra. Acum trebuie să creăm gloanțe în poziția


punctului: În editorul de evenimente, selectați parametrul Turret.X() și faceți
un click pe acesta: Un câmp de text va fi afișat. Folosiți-l pentru a înlocui
parametrul cu Turret.PointX(Canon) și faceți click oriunde pentru a închide
câmpul de text. Modifica, de asemenea, și parametrul Turret.Y(), astfel încât
acesta să devină Turret.PointY(Canon):

Asigurați-vă că funcționeză corect acum!

Crearea inamicilor turetei

În primul rând trebuie să creăm obiectele folosite pentru dușmani:


Adaugă un obiect la lista, cu numele = Enemy.
Editați obiectul și adăugați la el două imagini: tank2fr1.png și
tank2fr2.png. Apoi, faceți un click dreapta pe Animație 0 în lista de animații
din partea stângă a ferestrei, și schimbați intervalul de timp dintre imagini:
Setați-l la 0.05 secunde, de exemplu. Selectați, de asemenea, Loop the
animation pentru a vă asigura că animația se repetă:
Dorim ca inamicii să se îndrepte spre turetă. Adăugăm un nou
eveniment. Crearea unui inamic trebuie sa se intample la fiecare 0.25
secunde, astfel încât: Adaugăm o condiție, și anume, Timer - Value of a timer.
Introducem 0.25 pentru primul parametru și "EnemyCreation" pentru numele
timerului. Adăugăm apoi în același eveniment o acțiune pentru a reseta
cronometrul, și anume Action Timer - Reset a timer, având “EnemyCreation”
ca parametru).
Putem adăuga apoi o altă acțiune pentru a crea un
obiect de tip inamic: Adaugăm o acțiune: All objects - Objects - Create an
object. Introduceți Enemy în primul parametru. Pentru al doilea parametru,
adică poziția X a noului obiect care urmează să fie creat introducem
Random(800): Aceasta va returna un număr aleator între 0 și 800, astfel că
inamicul creat va avea o poziție diferită atunci când sunt este generat. Pentru
poziția Y, introduceți valoarea -50 . Acest lucru va crea inamic în afara
ecranului, astfel că jucatorul nu va avea sentimentul că un tanc inamic tocmai
a apărut și îl va omorî imediat.

Pentru moment, inamicii sunt creați, dar nu sunt în mișcare. Adaugăm


un alt eveniment, fără nici o condiție. Adaugăm acțiunea de îndreptare a
inamicului către Player. Alegem acțiunea: All objects > Displacement > Move
an object toward another. Pentru primul parametru, introducem Enemy, iar
pentru al doilea parametru Turret. Introducem o lungime de 150 pixeli, și o
amortizare de 0, deoarece forța va fi aplicată în mod continuu.
Datorită ultimul eveniment, inamicul va fi în mișcare. Un ultim lucru
pe care trebuie să îl facem este să ne asigurăm că dușmanii sunt orientați spre
turetă: Adaugăm o a doua acțiune All objects > Angle > Rotate toward
position. Introduceți Enemy ca prim parametru. Apoi, vrem ca inamicii să se
îndrepte către poziția Turret, astfel stabilim Turret.X() și Turret.Y() în
următorii doi parametri. Aceste două expresii orienteză inamicul în pozițiile X
și Y ale turetei. Ne putem îmbunătăți această acțiune, prin stabilirea
Turret.X(Center) și Turret.Y(Center) în loc de cele existente, astfel încât,
inamicul, să se orienteze spre poziția centrală a turetei.

Evenimentele create sunt următoarele:


Dacă pornim jocul, vom vedea că inamicii sunt creați și sunt în mișcare.
În cazul în care nu funcționează, verificați evenimentele, și anume: verificați
dacă numele cronometrului este corect în condiție și în acțiune. De asemenea,
verificați că ultimul parametru al acțiunii folosit pentru a muta dușmanii este
0.

Să adăugăm câteva explozii acum. Adăugați un nou Sprite numit


Explosion. Edit și adăugați toate imaginile cu numele Explosion_____.
Setăm timpul dintre imagini de 0.01 secunde. Puteți să vizualizați
imaginile. Obiectul de explozie este acum gata. Închidem editorul de imagine
pentru obiectul Explosion și mergem la tab-ul de evenimente.
Vrem ca dușmanii să explodeze atunci când aceștia sunt loviți de
gloanțe. Adăugăm un nou eveniment. Adaugăm apoi o condiție: All objects >
Collision > Collision. Adăugați Bullet și Enemy ca parametrii.

În cazul în care condiția este gata, se adaugă o acțiune pentru a crea


un obiect Explosion. Pentru poziție introduceți Enemy.X() și Enemy.Y(), pentru
a crea explozia la poziția dușmanului.
Adaugăm apoi o altă acțiune All objects > Objects > Delete an object.
Ca parametru, introduceți Enemy, astfel încât dușmaul va fi distrus când este
lovit de glonț.
Poate că ați observat că obiectele explozii nu sunt
distruse atunci când animația lor se termină. Acest lucru poate fi o problemă,
deoarece rămân pe scena și jocul devine mai puțin eficient. Noi trebuie să
curățăm mereu ecranul de aceste explozii: Adaugăm un nou eveniment.
Adaugă o condiție Sprite - Animation - Animation is over. Introduceți
Explosion ca parametru: Condiția va fi valabilă atunci când animația unei
explozii se va termina. Adaugăm o acțiune pentru acest eveniment, și anumte,
să distrugem obiectul explozie:

Adăugarea mai multor explozii și un mesaj de Game Over

În momentul de față, jucătorul nu va muri niciodată. Vrem ca jucătorul


turetă să fie distrus atunci când un inamic îl lovește.
În primul rând, adaugăm un nou eveniment, așa cum am făcut pentru
evenimentul folosit pentru a distruge inamicii: Adaugăm o condiție, aceea de
coliziune între Turret și Enemy. Apoi creăm o explozie în poziția Turret. În cele
din urmă, adăugăm o acțiune pentru a distruge tureta:

Acum ne mai rămâne de afișat un text "Game Over", atunci când


tureta este distrusă: Adaugăm un obiect la lista de obiecte. De data aceasta,
alegem un obiect Text, cu numele GameOver. Dublu click pe el și scrieți Game
over.

Când ați terminat, faceți click pe OK pentru a închide editorul


obiectului. Mergem la editorul scenă și punem textul pe scenă cu drag and
drop.
Pentru moment, obiectul este întotdeauna afișat. Mergem la editorul
de evenimente și se adaugăm un nou eveniment. Adaugăm o condiție Scene
- At the beginning of the scene și o acțiune All objects - Visibility - Hide an
object cu GameOver ca parametru. Astfel , textul va fi
ascuns atunci când jocul va fi lansat.
Pentru a afișa textul atunci când tureta este distrusă, adaugăm un alt
eveniment. Adaugă o condiție All objects - Objects - Number of objects.
Introduceți Turret ca prim parametru, apoi = în al doilea parametru și 0 pentru
al treilea parametru: Condiția va fi îndeplinită în cazul în care numărul de
turete de pe scenă va ajunge la 0, adică când jucătorul va fi distrus. Adaugăm
apoi acțiunea de afișare a obiectului: All objects – Visibility – Show an object.

De asemenea, ar fi bine, să adăugăm o mică întârziere înainte de a


afișa textul GameOver: Adaugăm o acțiune pentru a reseta cronometrul
numit "GameOver" în cazul în care tureta este distrusă. Apoi se adaugă o
condiție la ultimul eveniment pentru a compara dacă temporizatorul
"GameOver" a ajuns la 0.5 secunde, și anume:
În cele din urmă, un efect interesant este de a
opri jocul, atunci când este afișat Game Over. Adaugăm încă o acțiune la
ultimul eveniment: Alegem Timers and time > Time scale action și introduceți
0 ca parametru pentru a întrerupe jocul.

Aici sunt toate evenimentele:

Ștergerea gloanțelor care ies din ecran

Amintiți-vă că noi întotdeauna trebuie să distrugem lucrurile


nefolosite, astfel încât să prevenim ca jocul să fie inundat cu obiecte inutile,
pentru că se îngreunează foarte mult jocul. De aceea avem grijă să ștergem
Explosion, atunci când animațiile se termină. Dar gloanțele? Când se duc în
afara ecranului, acestea încă mai există și computerul trebuie să le actualizeze
de fiecare dată când ecranul este reîmprospătează: Acest lucru poate produce
o încetinire a performanței.
Am putea adăuga un eveniment pentru a distruge gloanțele atunci
când acestea sunt prea departe de Turret, acest lucru fiind destul de ușor. Dar
putem folosi, de asemenea un comportament, ne
amintim, că acesta este utilizat pentru a adăuga un comportament specific
unui obiect. Aici, vom folosi un comportament care va distruge în mod
automat obiectul atunci când merge în afara ecranului.

Facem un click dreapta pe obiectul Bullet din lista de obiecte și alegem


Properties:

Pasul următor este de adăugare a unui comportament - Add a


behavior - Destroy when outside screen behavior.

Acum avem siguranța că obiectele Bullet vor fi distruse atunci când


vor ieși din spațiul de lucru.

Adăugarea unui fundal

Un ultim lucru pentru a face jocul să arate bine este de a adăuga un


fundal. Adăugăm un obiect Sprite, numit Backgrounf. Îl edităm și îi adăugăm
imaginea de fundal. Apoi trebuie să îl tragem din lista de obiecte pe scenă.
Fundalul este afișat deasupra obiectelor existente. Pentru a schimba
acest lucru, facem dublu click pe el – Properties. Pur și simplu schimbăm
valoarea lui Z: Introducem un număr negativ pentru a ne asigura că celelalte
obiecte (care au un Z pozitiv) vor fi afișate peste fundal. (Obiectele cu un Z
mai mare sunt afisate peste alte obiecte. În mod implicit, valoarea Z a unui
obiect este pur și simplu 0). De asemenea, schimbăm poziția obiectului pentru
a seta coordonatele X și Y la valoarea 0:
Cuvintele cheie folosite în această lecție

1. Acțiunile mouse-ului = sunt evenimente create în urma apăsării pe


butoanele mouse-ului;
2. Forțe de mișcare = sunt forțe create în mediul GDevelop care ne ajută să
rotim personajele, să le aplicăm impulsuri, etc.
3. Cronometru = unealta care ne ajută să simulăm existența unui ceas în
GDevelop, pe care îl putem porni, opri, reseta, etc.
4. Numere aleatorii = opțiunea care ne permite să obținem numele aleatorii
dintr-un anumit interval specificat. Exemplu: random(100) va alege un număr
între 0 și 100.

S-ar putea să vă placă și