CoronaSDK Creați un joc distractiv de bouncing

În acest tutorial, vă voi arăta cum să creați un joc cu Corona SDK. Veți afla mai multe despre API-ul de desenare, comenzile de atingere și numerele aleatoare. Obiectivul acestui joc este de a folosi o paletă pentru a împiedica atingerea bilelor de pe podea. Pentru a afla mai multe, citiți mai departe!

1. Prezentare generală a aplicațiilor

Vom folosi grafice pre-făcute pentru a codifica un joc interesant folosind API-urile Lua și Corona SDK.

După finalizare, playerul va folosi ecranul tactil de pe dispozitiv pentru a controla o paletă. Parametrii din cod pot fi modificați pentru a personaliza jocul.


2. Dispozitivul țintă

Primul lucru pe care trebuie să-l facem este să selectăm platforma pe care dorim să o executăm. Astfel vom putea alege dimensiunea imaginilor pe care le vom folosi.

Platforma iOS are următoarele caracteristici:

  • iPad 1/2 / Mini: 1024x768px, 132 ppi
  • iPad Retina: 2048x1536, 264 ppi
  • iPhone / iPod Touch: 320x480px, 163 ppi
  • iPhone / iPod Retina: 960x640px, 326 ppi
  • iPhone 5 / iPod Touch: 1136x640, 326 ppi

Deoarece Android este o platformă deschisă, există multe dispozitive și rezoluții diferite. Unele dintre caracteristicile comune ale ecranului sunt:

  • Tableta Asus Nexus 7: 800x1280px, 216 ppi
  • Motorola Droid X: 854x480px, 228 ppi
  • Samsung Galaxy SIII: 720x1280px, 306 ppi

În acest tutorial ne vom concentra pe platforma iOS cu design grafic, în special pentru a fi dezvoltate pentru distribuție pe un iPhone / iPod touch, dar codul prezentat aici se aplică și dezvoltării Android cu SDK Corona.


3. Interfața

O interfață simplă și prietenoasă va fi utilizată. Aceasta implică mai multe forme, butoane, imagini bitmap și multe altele.

Resursele de interfață grafice necesare pentru acest tutorial pot fi găsite în descărcarea atașată.


4. Export Graphics

În funcție de dispozitivul pe care l-ați selectat, este posibil să fie necesar să exportați grafica în PPI recomandat. Puteți face acest lucru cu editorul dvs. preferat de imagine.

Am folosit Reglați dimensiunea ... în aplicația Previzualizare pe Mac OS X.

Nu uitați să dați imaginilor un nume descriptiv și să le salvați în dosarul proiectului.


5. Configurarea aplicației

Vom utiliza un fișier extern pentru a face aplicația să devină ecran complet pe toate dispozitivele ( config.lua fişier). Acest fișier arată dimensiunea originală a ecranului și metoda utilizată pentru a scala acel conținut în cazul în care aplicația rulează într-o altă rezoluție a ecranului.

 aplicație = content = width = 320, height = 480, scale = "letterbox",

2. Main.lua

Să scriem cererea!

Deschideți editorul Lua preferat (orice Editor de text va funcționa, dar nu veți avea o evidențiere a sintaxei) și vă pregătiți să scrieți aplicația minunată. Nu uitați să salvați fișierul ca main.lua în dosarul proiectului.


7. Structura codului

Ne vom structura codul ca și cum ar fi o clasă. Dacă știți ActionScript sau Java, veți găsi structura familiară.

 Variabile și constante de clase necesare Declare funcții contructor (funcție principală) metode de clasă (alte funcții) apel funcția principală

8. Ascundeți bara de stare

 display.setStatusBar (display.HiddenStatusBar)

Codul de mai sus ascunde bara de stare. Bara de stare este bara din partea de sus a ecranului dispozitivului, care afișează ora, semnalul și alți indicatori.


9. Contextul

Un vector simplu este folosit ca fundal pentru interfața aplicației. Următoarea linie de cod creează.

 -- Grafică - [Fundal] local bg = display.newRect (0, 0, display.contentWidth, display.contentHeight) bg: setFillColor (52, 46, 45)

10. Vizualizare titlu

Aceasta este titlul de vizualizare, acesta va fi primul ecran interactiv care va apărea în jocul nostru. Aceste variabile stochează componentele sale:

 -- [Title View] titlu local local playBtn local creditsBtn title localView

11. Vizualizarea creditelor

Această vizualizare va afișa creditele și drepturile de autor ale jocului. Această variabilă va fi utilizată pentru stocarea acesteia:

 -- [CreditsView] credite locale

12. Mesaj de instrucțiuni

Un mesaj de instrucțiuni va apărea la începutul jocului și va fi completat după 2 secunde. Puteți schimba timpul ulterior în cod.

 -- Instrucțiuni locale ins

13. Cercuri de culoare

Iată cercurile sau bilele. Obiectivul jocului este de a le împiedica să atingă partea de jos a ecranului.

 -- Cercuri de cercuri cercuri locale = display.newGroup ()

14. Alertă

Aceasta este alerta care va fi afișată când o minge atinge podeaua. Acesta va afișa scorul și va încheia jocul.

 -- Alertă alertă localăVizualizare

15. Sunete

Vom folosi efecte de sunet pentru a spori senzația jocului. Sunetele folosite în acest joc au fost create în as3sfxr.

 -- Sună locală bounceSnd = audio.loadSound ('bounce.wav') locală loseSnd = audio.loadSound ('lose.wav')

16. Variabile

Acestea sunt variabilele pe care le vom folosi. Puteți citi comentariile din cod pentru a afla mai multe despre ele.

 -- Variabilele cercului localTimer - adaugă un cerc nou de fiecare dată când se numește culori locale = 71, 241, 255, 255, 204, 0, 245, 94, 91, 0, 255, 204 250, 140, 254, - Posibile culori pentru cercuri (R, G, B)

17. Declarați funcțiile

Apoi, declarați toate funcțiile ca local la inceput.

 -- Funcții locale Main =  local startButtonListeners =  local showCredits =  locală hideCredits =  locală showGameView =  locallocListeners =  local moveBar = local localCollection =  local alert = 

18. Constructor

În timpul acestui pas vom crea funcția care inițializează logica jocului:

 funcția principal () - cod ... sfârșit

19. Adăugați Vizualizarea titlurilor

Acum o vom plasa TitleView în stadiu și apelați o funcție care adaugă Atingeți ascultători de butoane.

 ('playBtn.png', 130, 248) creditsBtn = display.newImage ('creditsBtn.png', 125, 316) titleView = display.newGroup (titlu, playBtn, creditsBtn) startButtonListeners ('adaugă') sfârșit

20. Ascultarea butoanelor de pornire

Această funcție adaugă ascultătorilor necesari TitleView butoane:

 funcția startButtonListeners (acțiune) dacă (action == 'add') atunci playBtn: addEventListener ('tap', showGameView) creditsBtn: addEventListener 'tap', showCredits) sfârșitul final

21. Afișați creditele

Ecranul de credite este afișat atunci când utilizatorul interceptează despre buton, a Atingeți ascultător se adaugă la vizualizarea creditelor pentru al elimina.

 funcția aratăCredități: apăsați (e) playBtn.isVisible = false crediteBtn.isVisible = false crediteView = display.newImage ('credits.png', 0, display.contentHeight) transition.to (creditsView, time = 300, y = display. contentHeight - (creditsView.height - 40), onComplete = funcție () creditsView: addEventListener ('atingeți', hideCredits) end) end

22. Ascundeți creditele

Când ecranul de credite este atins, acesta va fi completat din scenă și eliminat.

 funcția ascundeCredite: apăsați (e) transition.to (crediteView, time = 300, y = display.contentHeight + 40, onComplete = function () creditsBtn.isVisible = true playBtn.isVisible = credite realeView: removeEventListener ) display.remove (creditsView) creditsView = nil end) sfârșit

23. Afișați vizualizarea jocului

Cand Joaca butonul este apăsat, TitleView este completat și îndepărtat, dezvăluind GameView. Există multe părți implicate în această viziune, așa că le vom împărți în următorii pași.

 funcția showGameView: atingeți (e) transition.to (titleView, time = 300, x = -titleView.height, onComplete = function () startButtonListeners ('rmv') display.remove (titleView) titleView =

24. Mesaj de instrucțiuni

Următoarele linii adaugă mesajul cu instrucțiuni:

 (ins, time = 200, alpha = 0.1, onComplete = function () timer.performWithDelay (2000, function () transition.to ( ins, time = 200, alfa = 0.1, onComplete = functie () display.remove (ins) ins = nil end) sfarsit)

25. Adăugați cârligul

Acest pas creează paleta și o plasează pe scenă. Un nume poate fi adăugat mai târziu pentru un acces mai ușor.

 -- Adăugați bare bar = display.newRoundedRect (70, 340, 160, 10, 3) bar.name = 'bar'

26. Pereți

Acum vom crea ziduri în jurul ecranului pentru a împiedica bilele să părăsească scena.

 -- Pereți stânga = display.newLine (0, 240, 0, 720) left.isVisible = false dreapta = display.newLine (320, 240, 320, 720) right.isVisible = false bottom = , 480) bottom.isVisible = false

27. Scor

Iată un scor TextField pentru a crea în partea dreaptă sus a scenei:

 -- Scor de scor = display.newText ('0', 300, 0, 'Futura', 15)

28. Fizica

Apoi trebuie să adăugăm fizica obiectelor noastre. Aici vom folosi Filtru proprietate care împiedică anumite obiecte să se ciocnească una cu cealaltă. Acest lucru împiedică coliziunea cercurilor noastre, păstrând în același timp ciocniri între pereți și pale. Puteți găsi o explicație simplă a comportamentului său pe site-ul Corona.

 -- Fizica physics.addBody (bar, 'static', filter = categoryBits = 4, maskBits = 7) physics.addBody (stânga, statică, filter = categoryBits = 4, maskBits = .addBody (dreapta, 'static', filter = categoryBits = 4, maskBits = 7) adăugați ')

29. Ascultarea jocurilor

Următoarea funcție adaugă ascultătorii necesari pentru a porni logica jocului:

 funcția gameListeners (acțiune) dacă (action == 'add') apoi bg: addEventListener ('touch', moveBar) bottom: addEventListener ('collision', alert) altfel bg: removeEventListener ('touch', moveBar) timer.cancel (circleTimer) circleTimer = coloana nul: removeEventListener ('collision', onCollision)

30. Deplasați paleta

Atingerea fundalului apelează următoarea funcție care gestionează mișcarea paletei. Urmează degetul și se află pe partea de sus a acestuia.

 funcția moveBar (e) dacă (e.phase == 'a mutat') apoi bar.x = e.x bar.y = e.y - 40 sfârșit - Păstrați bara 1/3 din partea de sus dacă (bar.y < 160) then bar.y = 160 end end

31. Adăugați un cerc

circleTimer cheamă acest cod. Creează un cerc sau o minge în partea superioară a ecranului (care este apoi mutat în jos prin gravitație) și îi dă o dimensiune aleatorie și culoare aleasă de la colorate Masa. Valorile culorii sunt apoi stocate pentru a schimba și paleta. Se adaugă o mică împingere într - o direcție aleatorie calculată de dir și r variabile.

 funcția addCircle () local r = math.floor (math.random () * 12) + 13 locală c = display.newCircle (0, 0, r) cx = math.floor (math.random - (r * 2))) cy = - (r * 2) - culoarea culorii locale color = math.floor (math.random () * 4) + 1 c.c1 = culori [color] [1] c2 = culori [color] [2] c.c3 = culori [color] [3] c: setFillColor (c.c1, c.c2, c.c3) fizics.addBody , bounce = 0.95, filter = categoryBits = 2, maskBits = 4) cercuri: inserați (c) --Movează dir local orizontal dacă (r < 18) then dir = -1 else dir = 1 end c:setLinearVelocity((r*2) * dir, 0 ) end

32. Coliziuni

Această funcție rulează când paleta se ciocnește cu o minge. Redă un sunet, mărește scorul și schimbă culoarea paletei.

 funcția onCollision (e) bara audio.play (bounceSnd): setFillColor (e.other.c1, e.other.c2, e.other.c3) score.text = tostring (tonumber (score.text) + 50) scor: setTextColor (e.other.c1, e.other.c2, e.other.c3) score.x = 300 sfârșit

33. Alertă

Funcția de alertă creează o vizualizare de alertă, o animă și termină jocul.

 () alertView = display.newImage ('alert.png', 90, 200) transition.from (alertView, time = 200, alpha = 0.1) scor localTF = display.newText (scor.text, 145, 253, 'Futura', 17) scorTF: setTextColor (255, 255, 255) - Așteptați 100 ms pentru a opri temporizarea fizică.performWithDelay (100, function () ) sfârșit, 1) sfârșit

34. Apelați funcția principală

Pentru a începe jocul, Principal funcția trebuie să fie numită. Cu codul de mai sus, vom face asta aici:

 Principal()

35. Ecran de încărcare

Default.png fișierul este o imagine afișată când începe aplicația în timp ce iOS încarcă datele de bază pentru a fi afișate în ecranul principal. Adăugați această imagine în folderul sursă al proiectului, apoi va fi adăugată automat de compilatorul Corona.


36. Icon

Utilizând grafica pe care ați creat-o înainte, puteți să creați acum o pictogramă bună. Dimensiunea pictogramei pentru pictograma non-retină iPhone este de 57x57px, dar versiunea retinei este 114x114px. Rețineți că magazinul iTunes necesită o versiune de 512x512px. Vă sugerăm să creați prima versiune 512x512 și apoi să scalați pentru alte dimensiuni.

Nu este nevoie să aveți colțurile rotunjite sau strălucirea transparentă, iTunes și iPhone-ul fac asta pentru tine.


37. Testarea în Simulator

E timpul pentru testul final. Deschideți Simulatorul Corona, navigați în dosarul proiectului, apoi faceți clic pe Deschis. Dacă totul funcționează așa cum era de așteptat, sunteți gata pentru ultimul pas!


38. Construiți

În Simulatorul Corona mergeți la Fișier> Construiți și selectați dispozitivul țintă. Completați datele solicitate și faceți clic pe Construi. Așteptați câteva secunde și aplicația dvs. este pregătită pentru testarea dispozitivului și / sau trimiterea pentru distribuire!


Concluzie

În acest tutorial, am învățat despre API-ul de desenare, cronometrele, numerele aleatoare și alte abilități care pot fi utile pentru un număr mare de jocuri.

Experimentați cu rezultatul final și încercați să faceți propria dvs. versiune personalizată a jocului!

Sper că ți-a plăcut această serie de tutori și ți-a dat de ajutor. Mulțumesc că ați citit!

Cod