Bine ați venit la o nouă serie de tutoriale în care vă voi arăta cum să construiți un joc de puzzle Match-3, de la zero, în Construct 2. În această primă parte vom pune bazele jocului și vom obține grila de puzzle de bază pe ecran.
Un joc Match-3 este un puzzle bazat pe blocuri în care vă mutați blocurile în zona de joc pentru a crea grupuri de trei sau mai multe care au un atribut comun (cum ar fi o culoare sau o formă). În cele mai multe jocuri de meci 3 jucătorul primește bonusuri pentru potrivirea a mai mult de trei blocuri simultan.
Majoritatea jocurilor de puzzle match-3 sunt competitive în natură, iar obiectivul jucătorului este, în general, doar obținerea celui mai mare scor posibil înainte de expirarea timpului sau o altă condiție de pierdere. Câteva exemple de jocuri meci-3 includ Pokemon Puzzle League, Bejeweled și recentul hit Candy Crush Saga.
Am decis sa bazez meciul-3 joc pe care il vom face pe Pokemon Puzzle League:
Dacă nu ați mai jucat-o niciodată, PPL este un meci destul de simplu-3 în cazul în care blocurile se ridică din partea de jos a ecranului de joc și jucătorul trebuie să creeze meciuri pentru a împiedica completarea ecranului de joc. Dacă blocurile ajung în partea de sus, jucătorul pierde și este obligat să înceapă din nou.
Aici este un demo al jocului pe care îl vom lucra pe parcursul seriei:
În acest prim articol ne vom concentra pe a pune bazele jocului nostru. Acest articol se va concentra în special pe stabilirea proiectului și pe crearea unei rețele de blocuri aleatoare pentru player.
Înainte de a începe cu acest tutorial trebuie să vă asigurați că ați instalat cea mai nouă versiune a Construct 2 (C2). Când am construit versiunea originală a jocului, foloseam Release 122, atât timp cât ai o versiune mai nouă decât asta, ar trebui să fii bine. Mai intai, daca nu ai folosit niciodata C2 inainte de a arunca o privire la acest ghid, care detaliaza elementele de baza ale utilizarii C2 si cum sa faci cele mai multe tipuri de obiecte.
De asemenea, trebuie să descărcați pachetul grafic pe care l-am creat pentru acest tutorial. Desigur, puteți folosi orice grafică doriți, voi oferi anumite poziții pentru multe elemente din aceste tutoriale și acele poziții se bazează pe imaginile pe care le-am folosit. Dacă utilizați o altă grafică, va trebui să țineți cont de orice diferențe de mărime din acea grafică atunci când urmați aceste tutoriale.
Odată ce ați instalat totul și aveți o bună înțelegere a C2, citiți mai departe!
Înainte de a construi toate gameplay-ul, trebuie să înființăm proiectul în sine. Încărcați C2 și urmați acești pași:
600x600
.fundal
, la mijlocul stratului blocuri
, și stratul superior la Câmp de joc
. GameBG
. fundal
.650, 650
. GameFieldBorder
.9, -12
.16, 732
.Câmp de joc
.GameFieldBorder
obiect. 368, -12
.GameFieldBottom
.197, 625
.344, 150
.Câmp de joc
.GameFieldBottom
obiect. 196, -30
.180
.Ultimul lucru pe care trebuie să-l facem este să facem un fundal pentru zona reală în care vor apărea blocurile.
0
, si Alfa la 200
.359, 570
.195294
.fundal
Câmpul de joc este acum complet, dar trebuie să realizăm un Sprite care poate fi folosit pentru Blocuri.
Înainte de a merge mai departe, aș vrea să explic imaginile blocului. Blocul gri este acolo pentru a reprezenta un bloc "inactiv", care va fi implementat într-un tutorial viitoare. Imaginile rămase sunt grupate în seturi de trei pentru fiecare bloc: primul cadru este pentru atunci când blocul nu este utilizat, al doilea este pentru atunci când playerul manipulează blocul, iar al treilea este pentru atunci când blocul este adaptat într-un grup.
În cele din urmă, luați blocul pe care l-am făcut și plasați-l undeva în aspectul care va împiedica jucătorul să îl vadă în timpul unui joc real. De asemenea, setați dimensiunea blocului la 40, 40
.
Am adus acum toate imaginile de care avem nevoie pentru acest articol și putem trece la a face munca de joc.
În versiunea finală a jocului, blocurile se vor mișca în sus, iar blocurile noi se vor împinge pe ecran din partea de jos. Pentru moment, totuși, trebuie să punem mecanica de bază în practică, așa că vom face o gamă de 8x8 de blocuri și o vom lăsa în acel moment.
Mergi la Fișa evenimentului 1 și adăugați aceste variabile globale pentru a defini poziția inițială de reproducere a blocurilor:
Variabila globală: valoarea SPAWNX = 49 Constant = Variabila globală reală: valoarea SPAWNY = 526 Constant = True
De asemenea, trebuie să facem un alt lucru înainte de a face primul eveniment: trebuie să creăm o variabilă de instanță pentru Bloc care spune blocului ce culoare este.
Creați o nouă variabilă de instanță pentru obiectul Bloc, denumiți-o Culoare
și nu modificați alte setări.
Acum vom face primul nostru eveniment. Scopul acestui eveniment este de a crea o grilă statică de blocuri în scopul testării:
Eveniment: Stare: Sistem> La inceputul layoutului Stare: Sistem> Pentru nume: "Y" Start index = 0 End index = 7 Sub-Event: Sistemul> Crearea obiectului Obiect: Blocul X = (SPAWNX + (loopIndex ("X")) * (Bloc.Width + 2) )
Ambele formule spun în esență același lucru. Mai întâi, adăugăm 2 la lățimea blocului, astfel încât fiecare bloc are un tampon de 2 pixeli între acesta și vecinii săi pentru a preveni falsurile pozitive atunci când se utilizează detecția coliziunilor. Apoi, înmulțim acest număr cu indicele curent în buclă pentru și adăugăm-l la poziția X sau Y de pornire. De asemenea, scădem din valoarea Y, deoarece în C2 punctul 0 de pe axa Y se află în partea superioară a ecranului de joc, prin scăderea valorii poziției Y punem un obiect mai aproape de partea de sus a ecranului.
Deci, ce realizează acest lucru? Aceasta înseamnă că, pe măsură ce iterațiile X și Y se repetă și valorile X și Y cresc, poziția pe care o plasează fiecare bloc se va schimba, ceea ce va avea drept rezultat o rețea pătrată:
Dacă executați jocul în acest moment, veți avea o rețea de blocuri - dar, în loc să fie diferite culori, toți vor purta doar prin fiecare imagine bloc în succesiune.
Pentru a rezolva acest lucru trebuie să facem două lucruri.
În primul rând, trebuie să atribuim fiecărui bloc o valoare de culoare utilizând variabila de instanță pe care am făcut-o mai devreme. Pentru aceasta, adăugați o altă acțiune:
Acțiune: Bloc> Valoarea setată Culoare = etaj (Randament (1,7))
Aceasta va atribui blocului o valoare de culoare aleatorie de la 1 la 6. (Motivul pentru care nu este de la 1 la 7 este explicat în explicația Întâmplător
funcţie.)
Funcția dvs. ar trebui să arate astfel:
De asemenea, trebuie să adăugăm un sistem care modifică imaginea unui bloc pe baza valorii acestuia. Pentru a face acest lucru, începeți prin adăugarea unei noi variante de instanță la obiectul Block:
Variabila de instanță pentru numele blocului: "IsMatched" Type: Valoarea inițială booleană = false
Acum, adăugați un nou eveniment:
Eveniment: System> Every Tick Acțiune: Bloc> Setați valoarea cadrului = (Block.Color-1) * 3 + 1
Această formulă scade mai întâi 1 din valoarea de culoare a blocului pentru a ține seama de faptul că valorile încep la 1 mai degrabă decât la 0. Apoi, se multiplică cu 3, pentru a ține cont de faptul că fiecare bloc are 3 cadre de animație. În cele din urmă, acesta adaugă 1 la acea valoare, deoarece imaginea standard a unui bloc este prima imagine din setul de imagini.
Să ne uităm la un exemplu rapid cu un bloc care are o valoare de culoare de 4, pentru a vedea ce cadru de animație va folosi. Mai intai scade 1 din valoarea de culoare pentru a obtine 3. Apoi inmulteste acel numar cu 3 pentru a face 9. In sfarsit adauga 1 la acea valoare pentru a face 10. Aceasta inseamna ca un bloc cu o valoare de culoare de 4 va folosi frame 10 ca cadrul său implicit de animație și va fi un bloc violet / pătrat.
Dacă rulați jocul dvs. acum, veți vedea că fiecare bloc este o culoare diferită, dar încă nu am implementat animații pentru momentul în care mouse-ul dvs. trece deasupra blocului sau atunci când este potrivită. Acest lucru va fi acoperit în tutorialul următor, împreună cu schimbarea a două Blocuri vecine.
Iată un mic demo despre cum ar trebui să arate jocul în acest moment (apuca sursa de aici):
Faceți clic pentru a încărca demonstrația.Dacă doriți să continuați să lucrați singuri, începeți să priviți la modificarea cadrului de animație al blocului pe baza unui eveniment "Mouse> Cursor este peste obiect". De asemenea, puteți începe să folosiți comportamentul "Drag & Drop" pentru a manipula blocul și luați în considerare modul în care puteți determina ce încearcă să facă jucătorul cu Blocul când acesta începe să îl tragă sau când îl dă.
Vă mulțumim că ați citit această parte a tutorialului, unde am stabilit baza de bază pentru meciul nostru Match-3. Vino înapoi în curând pentru următoarea parte a seriei! Puteți să țineți la curent prin Facebook, Twitter, Google+, RSS sau prin e-mail.