Crea un gioco ispirato a Lander Lunar - Aggiunta di interazione

Questa è la seconda puntata del nostro tutorial Corona SDK Lunar Lander. Nel tutorial di oggi, aggiungeremo alla nostra interfaccia e all'interazione del gioco. Continuare a leggere!


Da dove siamo partiti ...

Assicurati di controllare la parte 1 della serie per comprendere appieno e preparare questo tutorial.


Passaggio 1: avviare i pulsanti di ascolto

Questa funzione aggiunge gli ascoltatori necessari al TitleView pulsanti:

 function startButtonListeners (action) if (action == 'add') then titleBg: addEventListener ('tap', showGameView) creditsBtn: addEventListener ('tap', showCredits) else titleBg: removeEventListener ('tap', showGameView) creditsBtn: removeEventListener ( 'tocca', mostraCrediti) fine

Passaggio 2: Mostra crediti

La schermata dei crediti viene visualizzata quando l'utente tocca il pulsante about, a rubinetto l'ascoltatore viene aggiunto alla vista dei crediti per rimuoverlo.

 function showCredits: tap (e) creditsBtn.isVisible = false creditsView = display.newImage ('credits.png', -130, display.contentHeight-140) transition.to (creditsView, time = 300, x = 65, onComplete = function () creditsView: addEventListener ('tap', hideCredits) end) end

Passaggio 3: Nascondi crediti

Quando viene toccato lo schermo dei crediti, verrà rimosso dal palco e rimosso.

 function hideCredits: tap (e) creditsBtn.isVisible = true transition.to (creditsView, time = 300, y = display.contentHeight + creditsView.height, onComplete = function () creditsView: removeEventListener (visualizzazione 'tap', hideCredits). remove (creditsView) creditsView = nil end) end

Passaggio 4: mostra la vista di gioco

Quando il Inizio Tocca il pulsante, la vista del titolo viene interpolata e rimossa rivelando la vista di gioco. Ci sono molte parti coinvolte in questa vista, quindi le suddivideremo nei passaggi successivi.

 function showGameView: tap (e) transition.to (titleView, time = 300, x = -titleView.height, onComplete = function () startButtonListeners ('rmv') display.remove (titleView) titleView = nil end)

Passaggio 5: aggiungi lune

Questo codice posiziona le lune sul palco.

 -- Lune m1 = display.newImage ('moon.png', 386, 156) m2 = display.newImage ('moon.png', 252, 99) m3 = display.newImage ('moon.png', 131, 174) m1 .name = 'moon' m2.name = 'moon' m3.name = 'moon'

Step 6: Big Moon

Una luna più grande è usata come punto di atterraggio. Usa il prossimo codice per posizionarlo:

 -- Big Moon bigM = display.newImage ('moonBig.png', 10, 53) bigM.name = 'moon'

Step 7: Landing Spot

Il punto di atterraggio è rappresentato da un grafico a freccia. Viene creata una proprietà name per aiutare a identificare questi elementi quando si verifica una collisione.

 -- Arrow arrow = display.newImage ('arrow.png', 44, 24) arrow.name = 'goal'

Step 8: Rocket

Successivamente, aggiungiamo il razzo. Questo sarà il nostro elemento controllato dall'utente.

 -- Rocket rocket = display.newImage ('rocket.png', 409,5, 114)

Passaggio 9: stelle

Il seguente codice posizionerà le stelle sullo schermo:

 -- Stelle s1 = display.newImage ('star.png', 341, 146) s2 = display.newImage ('star.png', 273, 48) s3 = display.newImage ('star.png', 190, 234) s4 = display.newImage ('star.png', 37, 135) s1.name = 'stella' s2.name = 'stella' s3.name = 'stella' s4.name = 'stella'

Passaggio 10: controlli

Per spostare il missile sullo schermo avremo bisogno di un game pad, questo codice si prenderà cura di questo. UN rubinetto l'ascoltatore verrà aggiunto in seguito a ciascun pulsante per gestire il movimento.

 -- Controlla up = display.newImage ('dirBtn.png', 404, 246) left = display.newImage ('dirBtn.png', 10, 246) right = display.newImage ('dirBtn.png', 84, 246) up .name = 'su' left.name = 'left' right.name = 'right' up.rotation = 90 right.rotation = 180

Passaggio 11: Aggiungi fisica

Qui aggiungiamo la fisica agli elementi grafici.

 -- Aggiungi fisica physics.addBody (m1, 'static', radius = 35) physics.addBody (m2, 'static', radius = 35) physics.addBody (m3, 'static', raggio = 35) physics.addBody (bigM, 'static', radius = 40) physics.addBody (freccia, 'static') physics.addBody (razzo, 'dynamic') rocket.isFixedRotation = true rocket.isAwake = false --prevents iniziale explosion sound physics.addBody (s1, 'static', radius = 12) physics.addBody (s2, 'static', radius = 12) physics.addBody (s3, 'static', raggio = 12) physics.addBody (s4, 'static', radius = 12) arrow.isSensor = true s1.isSensor = true s2.isSensor = true s3.isSensor = true s4.isSensor = true

Passaggio 12: Ascoltatori di giochi

Questa funzione aggiunge gli ascoltatori necessari per avviare la logica di gioco.

 function gameListeners () su: addEventListener ('touch', movePlayer) a sinistra: addEventListener ('touch', movePlayer) a destra: addEventListener ('touch', movePlayer) Runtime: addEventListener ('enterFrame', aggiornamento) razzo: addEventListener ('collisione ', onCollision) fine

Passaggio 13: sposta la funzione del giocatore

La variabile di direzione viene cambiata da questa funzione, questo farà andare il razzo nella direzione premuta.

 function movePlayer (e) if (e.phase == 'started' e e.target.name == 'up') then dir = 'up' elseif (e.phase == 'ended' e e.target.name = = 'su') then dir = 'none' elseif (e.phase == 'started' e e.target.name == 'left') then dir = 'left' elseif (e.phase == 'begin' e e.target.name == 'right') then dir = 'right' elseif (e.phase == 'ended' e e.target.name == 'left') then dir = 'none' elseif (e.phase == 'ended' e e.target.name == 'right') then dir = 'none' end end

Step 14: Movimento del razzo

Queste linee muovono il razzo secondo la direzione stabilita dal moveplayer funzione creata nel passaggio 13.

 aggiornamento della funzione (e) - Movimento del razzo if (dir == 'up') quindi razzo: setLinearVelocity (0, -80) elseif (dir == 'left') quindi razzo: setLinearVelocity (-100, 0) elseif (dir == 'right') quindi razzo: setLinearVelocity (100, 0) end

Step 15: Collisione Rocket-Moon

Il prossimo codice ascolta una variabile impostata su true quando si verifica una collisione tra il razzo e una luna, il valore della variabile viene modificato dal onCollision funzione che verrà creata in seguito.

Quando è vero, il razzo sarà posto nella sua posizione originale e messo in uno stato di sonno per evitare una collisione con la luna sotto di esso.

 -- Rocket-Moon Collision if (hitMoon) poi rocket.x = 421.5 rocket.y = 134 hitMoon = false rocket.isAwake = false end

Step 16: Rocket-Star Collision

Un metodo simile è utilizzato nel rilevamento delle collisioni con razzo-stella.

 -- Rocket-Star Collision if (hitStar) then display.remove (starHit) stars = stars + 1 hitStar = false end

Passaggio 17: collisione del punto di atterraggio

Il livello sarà completo quando il giocatore ha raccolto le quattro stelle e atterra sulla luna più grande. Il seguente codice lo gestisce.

 -- Obiettivo se (hitGoal e stelle == 4) quindi razzo.x = 52 razzo.y = 35 physics.stop () display.remove (freccia) audio.play (obiettivo) hitGoal = false complete = display.newImage ('completo. png ') elseif (hitGoal e stars ~ = 4) then hitGoal = false end

Passaggio 18: funzione di collisione

Questa funzione viene eseguita quando il razzo si scontra con un altro corpo. Il nome del corpo viene quindi controllato per eseguire l'azione corretta. Fondamentalmente, viene riprodotto un suono e una variabile è impostata su true (per il aggiornare funzione da vedere) in base al nome dell'altro corpo.

 function onCollision (e) if (e.other.name == 'moon') then hitMoon = true audio.play (explo) elseif (e.other.name == 'star') quindi audio.play (star) starHit = e.other hitStar = true elseif (e.other.name == 'goal') then hitGoal = true end end

Passaggio 19: chiama la funzione principale

Per iniziare il gioco, il Principale la funzione deve essere chiamata. Con il codice sopra riportato, lo faremo qui:

 Principale()

Passo 20: schermata di caricamento

Il file Default.png è un'immagine che verrà visualizzata quando si avvia l'applicazione mentre iOS carica i dati di base per mostrare la schermata principale. Aggiungi questa immagine alla cartella sorgente del progetto, verrà automaticamente aggiunta dal complino Corona.


Passo 21: Icona

Usando la grafica che hai creato prima ora puoi creare un'icona carina e di bell'aspetto. La dimensione dell'icona per l'icona dell'iPhone non retina è 57x57px, ma la versione retina è 114x114px e lo store iTunes richiede una versione 512x512px. Suggerisco di creare prima la versione 512x512 e poi ridimensionarla per le altre dimensioni.

Non è necessario avere gli angoli arrotondati o il bagliore trasparente, iTunes e l'iPhone lo faranno per te.


Passaggio 22: test in simulatore

È tempo di fare il test finale. Apri il simulatore Corona, vai alla cartella del progetto, quindi fai clic su apri. Se tutto funziona come previsto, sei pronto per il passaggio finale!


Passaggio 23: Build

Nel Corona Simulator vai a File> Crea e seleziona il tuo dispositivo di destinazione. Compila i dati richiesti e clicca costruire. Attendi qualche secondo e la tua app sarà pronta per il test del dispositivo e / o l'invio per la distribuzione!


Conclusione

Sperimenta il risultato finale e prova a creare la tua versione personalizzata del gioco!

Spero ti sia piaciuta questa serie di tutorial e la trovi utile. Grazie per aver letto!