MAD: Game DevLog #2

  • 2 minute de citit
  • 5 imagini

Disponibil și în English

Salut tuturor! Este timpul pentru devlog-ul numărul #2!

În ultima săptămână am implementat pereții transparenți și mașina de stări a animațiilor jucătorului. Max a continuat să proiecteze sprite-urile jocului, iar Andrei a implementat animațiile bombelor și lucrează la unii inamici. Săptămâna viitoare voi încerca să implementez și să finalizez UpgradeManager, o clasă Singleton care va gestiona distribuirea power-up-urilor jucătorului.

Pereții transparenți au fost implementați cu ajutorul Raycast-urilor: peretele trimite o rază în sus și, dacă detectează collider-ul Player-ului, își reduce valoarea alpha la 50%; când raza nu mai lovește nimic, valoarea alpha crește din nou la 100%. În imaginea următoare, raza Raycast este desenată cu o linie roșie:

Când am încercat prima dată să fac mașina de stări a animațiilor jucătorului, m-am pierdut foarte repede și am renunțat la idee. Am încercat să o implementez cu un blending tree, sperând că va funcționa așa, dar nu a mers.

Blend Tree-urile sunt folosite pentru a combina mai multe animații într-un mod fluid. Când ai o animație de mers sau de alergare în 2D, vrei să redai animația „WalkLeft” când X este -1 și Y este Don’tCare. Pentru asta, Unity ne oferă blend tree-uri:

Problema cu această abordare este că nu funcționează când ai idleLeft și runLeft, pentru că blend tree-ul nu știe ce animație de repaus să aleagă când X și Y sunt amândouă 0. După o pauză, soluția mi-a venit brusc în minte: să folosesc o mașină de stări în loc de blend tree. Din orice stare poți trece în starea RunX, dar după ce termini starea RunX vei trece în IdleX.

Asta funcționează cum trebuie, dar are un compromis: nu te poți mișca pe diagonală. Fiecare tranziție are atașată o regulă pentru AnimationX sau AnimationY, iar dacă schimbi X și Y în același timp, sari aleatoriu la animațiile RunX și RunY, ceea ce arată ca un defect.

În Unity, X și Y sunt parametri personalizați ai mașinii de stări; nu trebuie neapărat să fie poziția X și Y a obiectului de joc. Poți ajusta codul de mișcare astfel încât să setezi AnimationX și AnimationY să prefere valoarea maximă dintre cele două și să o seteze pe cealaltă la 0.

Pentru a lucra împreună la acest proiect folosim Github pentru cod și Google Drive pentru partajarea resurselor.

Dacă vrei să folosești Github pentru proiectul tău Unity, îți recomand să generezi un fișier .gitignore potrivit.

Mulțumesc că ai citit!

Din ce vine titlul MAD? Vine doar din numele nostru: Maxi, Andrei și Denis. Fiind primul nostru joc și prima noastră încercare de a face ceva împreună, nu aveam idee ce nume să alegem.

Dacă vrei să începi să dezvolți primul tău joc cu Unity, am găsit următoarele lecții video foarte motivante și utile: