Crear un juego inspirado en Lunar Lander - Agregar interacción

Esta es la segunda entrega de nuestro tutorial de Corona SDK Lunar Lander. En el tutorial de hoy, agregaremos a nuestra interfaz y la interacción del juego. Sigue leyendo!


Donde dejamos…

Asegúrese de revisar la parte 1 de la serie para comprender completamente y prepararse para este tutorial.


Paso 1: Iniciar los oyentes del botón

Esta función agrega los oyentes necesarios a la TitleView botones:

 function startButtonListeners (acción) if (acción == 'agregar') luego titleBg: addEventListener ('tap', showGameView) creditsBtn: addEventListener ('tap', showCredits) else titleBg: removeEventListener ('tap', showGameView) creditsBtn: removeEventListener 'tap', showCredits) end end end

Paso 2: Mostrar créditos

La pantalla de créditos se muestra cuando el usuario toca el botón Acerca de, un grifo El oyente se agrega a la vista de créditos para eliminar esto..

 función showCredits: toque (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) fin

Paso 3: Ocultar Créditos

Cuando se toca la pantalla de créditos, se interpone fuera del escenario y se elimina.

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

Paso 4: Mostrar la vista del juego

Cuando el comienzo se pulsa el botón, la vista de título se interpola y se elimina, revelando la vista del juego. Hay muchas partes involucradas en esta vista, así que las dividiremos en los siguientes pasos.

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

Paso 5: Añadir lunas

Este código coloca a las lunas en el escenario..

 -- Moons 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'

Paso 6: Gran Luna

Una luna más grande se utiliza como el punto de aterrizaje. Usa el siguiente código para colocarlo:

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

Paso 7: Punto de aterrizaje

El punto de aterrizaje está representado por un gráfico de flecha. Se crea una propiedad de nombre para ayudar a identificar estos elementos cuando ocurre una colisión.

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

Paso 8: Cohete

A continuación, añadimos el cohete. Este será nuestro elemento controlado por el usuario..

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

Paso 9: Estrellas

El siguiente código colocará las estrellas en la pantalla:

 -- Estrellas 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 = 'star' s2.name = 'star' s3.name = 'star' s4.name = 'star'

Paso 10: Controles

Para mover el Rocket en la pantalla necesitaremos una plataforma de juego, este código se encargará de eso. UNA grifo El oyente se agregará más tarde a cada botón para manejar el movimiento..

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

Paso 11: Añadir Física

Aquí añadimos la física a los elementos gráficos..

 -- Añadir Física physics.addBody (m1, 'static', radius = 35) physics.addBody (m2, 'static', radius = 35) physics.addBody (m3, 'static', radius = 35) physics.addBody (bigM, 'static', radius = 40) physics.addBody (arrow, 'static') physics.addBody (rocket, 'dynamic') rocket.isFixedRotation = true rocket.isAwake = false --prevents initial sonido de explosión physics.addBody (s1, 'static', radius = 12) physics.addBody (s2, 'static', radius = 12) physics.addBody (s3, 'static', radius = 12) physics.addBody (s4, 'static', radius = 12) arrow.isSensor = true s1.isSensor = true s2.isSensor = true s3.isSensor = true s4.isSensor = true

Paso 12: oyentes del juego

Esta función agrega los oyentes necesarios para iniciar la lógica del juego..

 function gameListeners () up: addEventListener ('touch', movePlayer) left: addEventListener ('touch', movePlayer) right: addEventListener ('touch', movePlayer) Runtime: addEventListener ('enterFrame', update) rocket: addEventListener ('collision ', onCollision) end

Paso 13: Mueve la función del jugador

La variable de dirección se cambia con esta función, esto hará que el cohete gire en la dirección presionada.

 función movePlayer (e) si (e.phase == 'comenzó' y e.target.name == 'arriba') luego dir = 'up' elseif (e.phase == 'terminó' y e.target.name = = 'arriba') luego dir = 'none' elseif (e.phase == 'comenzó' y e.target.name == 'izquierda') luego dir = 'left' elseif (e.phase == 'comenzó' y e.target.name == 'right') luego dir = 'right' elseif (e.phase == 'end' y e.target.name == 'left') luego dir = 'none' elseif (e.phase == 'terminó' y e.target.name == 'derecho') luego dir = 'ninguno' fin final

Paso 14: Movimiento de cohetes

Estas líneas mueven el cohete según la dirección establecida por el mover jugador función creada en el paso 13.

 función de actualización (e) - Movimiento de cohete si (dir == 'arriba') luego cohete: setLinearVelocity (0, -80) elseif (dir == 'left') luego cohete: setLinearVelocity (-100, 0) elseif (dir == 'derecho') luego cohete: setLinearVelocity (100, 0) final

Paso 15: Colisión Rocket-Moon

El siguiente código escucha un conjunto de variables en verdadero cuando se produce una colisión entre el cohete y la luna, el valor de la variable se cambia por onCollision Función que se creará más adelante..

Cuando sea cierto, el cohete se colocará en su posición original y se pondrá en un estado de reposo para evitar una colisión con la luna debajo de él..

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

Paso 16: Colisión Rocket-Star

Un método similar se utiliza en la detección de colisiones de cohetes y estrellas..

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

Paso 17: Colisión del punto de aterrizaje

El nivel se completará cuando el jugador haya recogido las cuatro estrellas y aterrice en la luna más grande. El siguiente código maneja ese.

 -- Goal if (hitGoal and stars == 4) entonces rocket.x = 52 rocket.y = 35 physics.stop () display.remove (arrow) audio.play (goal) hitGoal = false complete = display.newImage ('complete. png ') elseif (hitGoal and stars ~ = 4) y luego hitGoal = false end

Paso 18: Función de colisión

Esta función se ejecuta cuando el cohete choca con otro cuerpo. El nombre del cuerpo se comprueba para realizar la acción correcta. Básicamente, se reproduce un sonido y una variable se establece en verdadero (para el actualizar función para ver) según el nombre del otro cuerpo.

 función onCollision (e) if (e.other.name == 'moon') luego hitMoon = true audio.play (explo) elseif (e.other.name == 'star') luego audio.play (star) starHit = e.other hitStar = true elseif (e.other.name == 'goal') luego hitGoal = true end end

Paso 19: Llamar a la función principal

Para comenzar el juego, el Principal La función necesita ser llamada. Con el código anterior en su lugar, lo haremos aquí:

 Principal()

Paso 20: Cargando pantalla

El archivo Default.png es una imagen que se mostrará justo al iniciar la aplicación, mientras que iOS carga los datos básicos para mostrar la pantalla principal. Agregue esta imagen a su carpeta de origen del proyecto, se agregará automáticamente por el complemento de Corona.


Paso 21: Icono

Usando los gráficos que creó antes, ahora puede crear un ícono agradable y atractivo. El tamaño del icono para el icono del iPhone sin retina es de 57x57px, pero la versión de la retina es de 114x114px y la tienda de iTunes requiere una versión de 512x512px. Sugiero crear primero la versión 512x512 y luego reducir la escala para los otros tamaños..

No es necesario que tenga las esquinas redondeadas o el brillo transparente, iTunes y el iPhone lo harán por usted..


Paso 22: Pruebas en simulador

Es hora de hacer la prueba final. Abra el simulador de Corona, busque la carpeta de su proyecto y luego haga clic en Abrir. Si todo funciona como se espera, estás listo para el paso final!


Paso 23: Construir

En el simulador de corona ir a Archivo> Construir y seleccione su dispositivo de destino. Rellene los datos requeridos y haga clic construir. Espere unos segundos y su aplicación estará lista para la prueba del dispositivo y / o el envío para su distribución!


Conclusión

Experimenta con el resultado final y trata de hacer tu versión personalizada del juego.!

Espero que les haya gustado esta serie de tutoriales y les resulte útil. Gracias por leer!