Construiți un joc de hochei pe aer - adăugați o interacțiune

Aceasta este cea de-a doua tranșă în tutorialul nostru pentru jocul de hochei pe aer SDK Corona. În tutorialul de astăzi, vom adăuga la interfața noastră și vom codifica interacțiunea jocului. Citește mai departe!


Disponibile și în această serie:

  1. Construiți un joc de hochei pe aer - crearea de interfețe
  2. Construiți un joc de hochei pe aer - adăugați o interacțiune

Unde am plecat ...

Asigurați-vă că verificați partea 1 a seriei pentru a înțelege pe deplin și pentru a vă pregăti pentru acest tutorial.


Pasul 1: Ascultați butoanele Start

Această funcție adaugă ascultătorilor necesari la TitleView butoane.

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

Pasul 2: Afișați creditele

Ecranul creditelor este afișat atunci când utilizatorul apasă butonul aproximativ. A Atingeți ascultător se adaugă la vizualizarea creditelor pentru al elimina.

 (e) playBtn.isVisible = false crediteBtn.isVisible = credite falseView = display.newImage ('credits.png', 0, display.contentHeight) lastY = titluBg.y transition.to (titleBg, time = 300 , y = (display.contentHeight * 0.5) - (titleBg.height + 50)) transition.to (crediteView, time = 300, y = (display.contentHeight * 0.5) + 35, onComplete = addEventListener ('atingeți', ascundeCredități) end) sfârșit

Pasul 3: Ascundeți creditele

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

 funcția ascundeCredite: atingeți (e) transition.to (crediteView, time = 300, y = display.contentHeight + 25, onComplete = function () creditsBtn.isVisible = true playBtn.isVisible = credite realeView: removeEventListener ) display.remove (creditsView) crediteView = nil end) transition.to (titleBg, time = 300, y = lastY); Sfârșit

Pasul 4: Afișare vizualizare joc

Cand start butonul este atins, vizualizarea titlului este completat și eliminat, dezvăluind vizualizarea jocului. Există multe părți implicate în această viziune, așa că le vom împărți în pașii următori.

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

Pasul 5: Adăugați pereți

Aici vom crea 6 linii care vor fi folosite ca pereți de masă.

 -- Pereți stânga = display.newLine (-1, display.contentHeight * 0.5, -1, display.contentHeight * 2) dreapta = display.newLine (display.contentWidth + 1, display.contentHeight * 0.5, display.contentWidth + .contentHeight * 2) topLeft = display.newLine (0, -1, display.contentWidth - 120, -1) topRight = display.newLine (display.contentWidth, -1, display.contentWidth * 1.6, -1) bottomLeft = .newLine (0, display.contentHeight, display.contentWidth - 120, display.contentHeight) bottomRight = display.newLine (display.contentWidth, display.contentHeight, display.contentWidth * 1.6, display.contentHeight)

Pasul 6: Adăugați fundalul jocului

Acest cod plasează fundalul jocului în etapă.

 -- Joc Bg gameBg = display.newImage ('gameBg.png')

Pasul 7: Jucătorul

Adăugați paleta de jucători cu următorul cod:

 -- Playerul jucătorului = display.newImage ('paddle1.png', display.contentCenterX-25, display.contentHeight-100)

Pasul 8: Enemy

Pilula inamicului este creată de această linie:

 -- Inamicul inamicului = display.newImage ('paddle2.png', display.contentCenterX-25, 10)

Pasul 9: Scoruri

Apoi adăugăm scorurile TextFields pentru a le folosi mai târziu.

 -- Scoruri enemyScore = display.newText ('0', 289, 206, 'Courier-Bold', 20) enemyScore: setTextColor (227, 2, 2) playerScore = Bold ', 20) jucatorScore: setTextColor (227, 2, 2)

Pasul 10: Puck

Acesta este pucul, va apărea în centrul scenei.

 -- Puck puck = display.newImage ('puck.png', display.contentCenterX-20, display.contentCenterY-20)

Pasul 11: Adăugați fizică

În cele din urmă, adăugăm fizica elementelor grafice. De asemenea, setăm o proprietate Puck la false pentru a preveni rotația sa.

 -- Set Physics.addBody (stânga, statică) fizics.addBody (dreapta, 'static') fizics.addBody (topLeft, 'static') fizics.addBody (bottomLeft, static) fizics.addBody ') fizics.addBody (bottomRight,' static ') fizics.addBody (puck,' dynamic ', radius = 20, bounce = 0.4) puck.isFixedRotation = 25) fizics.addBody (inamic, 'static', radius = 25) sfârșitul jocului ('adaugă') sfârșit

Pasul 12: Trageți corpul fizicii

Următoarea funcție se ocupă de tragerea Playerului.

Folosește o metodă diferită de tutorialele anterioare, deoarece vrem să tragem obiectul fără a-și pierde interacțiunile fizice. Puteți citi mai multe despre acest lucru pe site-ul web Corona.

 funcția dragBody (eveniment) gameUI.dragBody (eveniment, maxForce = 20000, frecvența = 10, dampingRatio = 0.2, center = true

Pasul 13: ascultători de jocuri

Această funcție adaugă ascultătorii necesari pentru a porni logica jocului.

 (= action == 'add') apoi player: addEventListener ('touch', dragBody) Runtime: addEventListener (' removeEventListener ('atinge', dragBody) Durata de executie: removeEventListener ('enterFrame', update) timer.cancel (timerSrc) timerSrc = sfarsitul nilului

Pasul 14: Deplasați dușmanul

Un cronometru este folosit pentru a muta inamicul, ceea ce va crea o întârziere care să permită dușmanului să rateze lovirea pucului.

 funcția moveEnemy (e) - Deplasare Enemy if (puck.y < display.contentHeight * 0.5) then transition.to(enemy, time = 300, x = puck.x) end end

Pasul 15: Scorul de actualizare

Funcția Actualizare rulează fiecare cadru.

Această parte a codului verifică dacă pucul a părăsit scena prin spațiul în care nu au fost adăugați pereți. Dacă este adevărat, acesta mărește câmpul de text corespunzător scorului.

 actualizare funcție () - scorul dacă (puck.y> display.contentHeight) apoi enemyScore.text = tostring (tonumber (enemyScore.text) + 1) elseif (puck.y < -5) then playerScore.text = tostring(tonumber(playerScore.text) + 1) end

Pasul 16: Poziția puțului de repaus

Aceste linii reinițializează poziția puckului atunci când părăsește scena și joacă un sunet gol.

 -- Resetați poziția Puck dacă (puck.y> display.contentHeight sau puck.y < -5) then puck.x = display.contentCenterX puck.y = display.contentCenterY puck.isAwake = false audio.play(bell) end

Pasul 17: Stadiul jucătorului de frontieră

Aici împiedicăm să coboare jucătorul în partea inamic a scenei.

 -- Păstrați cu zbaturi pe partea jucătorului dacă (player.y < display.contentWidth - 60) then player.y = display.contentWidth - 60 end end

Pasul 18: 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()

Pasul 19: Ecranul de încărcare

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


Pasul 20: Pictogramă

Utilizând grafica pe care ați creat-o înainte de a crea acum o pictogramă frumoasă și bună. Dimensiunea pictogramei pentru pictograma non-retina iPhone este de 57x57px, dar versiunea retinei este 114x114px și 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 trebuie să aibă colțurile rotunjite sau strălucirea transparentă, iTunes și iPhone-ul vor face asta pentru tine.


Pasul 21: Testarea în simulator

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


Pasul 22: Construiți

În simulatorul Corona, du-te 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. va fi gata pentru testarea dispozitivului și / sau trimiterea pentru distribuire!


Concluzie

Experimentați cu rezultatul final și încercați să faceți versiunea personalizată a jocului!

Sper că ți-a plăcut această serie de tutori și ți se pare util. Mulțumesc că ați citit!

Cod