FUNDACIÓN OMAR DENGO Guía introducctoria al Construct 2 25/03/2014 [Escriba aquí una descripción breve del documento. Normalmente, una descripción breve es un resumen corto del contenido del documento. Escriba aquí una descripción breve del documento. Normalmente, una descripción breve es un resumen corto del contenido del documento.] Introducció n Construct 2 es un software para Windows que nos permite desarrollar juegos de calidad en HTML5 de una forma fácil y rápida, sin necesidad de experiencia en programación. Con este software podemos crear juegos a través de una interfaz intuitiva, la cual nos ofrece muchas opciones y nos permite controlar los eventos, que es donde se va desarrollando el juego. Posee un motor de efectos físicos que nos permite agregar esos efectos a los juegos. Una vez que terminamos el juego, antes de distribuirlo, podemos probarlo en móviles y tabletas utilizando Wifi. La calidad de los juegos por supuesto dependerá de nuestra imaginación y habilidad. Ofrece 3 licencias: Free, Standard y Business. La primera con limitaciones, la podemos descargar y usar por el tiempo que se nos ocurra, pero no podemos comercializar los juegos. La “Standard” ofrece más características y nos permite comercializar los juegos como desarrolladores particulares. Por último la licencia de “Business” posee las mismas características de la versión “Standard” pero su licencia es para empresas dedicadas al desarrollo, además de permitir comercializar los juegos sin ningún tipo de restricciones. Podemos descargar la versión gratuita del software desde la web oficial de su editora Scirra (https://www.scirra.com/) y ponernos a crear nuestro juego en cuestión de minutos. El programa sigue una filosofía de arrastrar y soltar, de forma que si queremos añadir un fondo o un sprite a nuestra escena, no hay más que arrastrarlo directamente desde la carpeta donde se encuentra. 1 Có mo hacer un juego de plataformas Instalando Construct 2 Si no lo has hecho todavía, baja una copia de la última versión de Construct 2 desde el siguiente enlace: http://www.scirra.com/construct2/releases/new Construct 2 es sólo para Windows, pero los juegos que puedes hacer corren en cualquier plataforma, ya sea Mac, Linux, iPad y Android. Construct 2 puede también ser instalado en en cuentas de usuario limitadas. También es portátil, así que puedes instalarlo por ejemplo en una memoria USB y llevarlo contigo a donde quieras. Este tutorial usa los sprites de Jungle Platformer este paquete lo puedes descargar desde el apartado de recursos en nuestro sitio web. Comenzando Una vez listo, abre Construct 2. Haz click en File y selecciona New. Creación de nuevo proyecto En el cuadro de diálogo New Project (Nuevo proyecto) no necesitas cambiar nada. Sólo haz click en Create project (Crear proyecto). Construct 2 nos conservará el proyecto completo en un único archivo .capx. Ahora te aparecerá un lienzo vacío (Layout), esta es la vista de diseño donde crearás y posicionarás los objetos. Piensa en este lienzo como si fuera el nivel de un juego, o una pantalla de menú inicial. En otras herramientas, esto puede ser llamado “cuarto”, “escena” o “cuadro” (room, scene or frame). 2 Tamaño del lienzo Ante todo necesitamos que este lienzo sea un poco más grande que lo normal. Click izquierdo en cualquier lugar del lienzo y en la “barra de propiedades” (Properties Bar) aparecerán las “propiedades del lienzo” (Layout Properties). Cambie el tamaño a 4000 x 2048. Vamos a colocar una imagen tipo “azulejo” en el fondo del lienzo. Doble-click en cualquier lugar del lienzo. Nos aparece la opción Insert Object. Doble click en el objeto Tiled Background para insertarlo. El Mouse se vuelve una cruz. No importa donde lo coloques inicialmente, solo le das click izquierdo en algún lugar del lienzo. Se abre entonces el “Editor de imagen” Image editor de tal forma que puedas colocar la imagen. Vamos entonces a importar el archivo Background Image\Background.png desde el paquete de sprites. Click en Open para importar una imagen. 3 Selecciona el archivo Background Image\Background.png y entonces cierra el editor de imagen. Ahora verás parte de la imagen de fondo en el lienzo. Necesitamos cubrir todo el fondo. Comprueba que que está seleccionado (click izquierdo en el lienzo) y sus propiedades aparecerán en la Properties Bar. Para cubrir el lienzo completo, coloca su posición (Position) a 0, 0 y su tamaño (Size) to 4000, 2048 (el mismo tamaño que el lienzo). La imagen del fondo es bastante grande, así que es difícil verla toda de una vez. Vamos a hacer zoom out para mirarla más. Presiona Control y scroll the mouse wheel down para alejar la vista. Alternativamente, presiona View - Zoom out en la cinta un par de veces. Podrás entonces ver el lienzo complete, un poco como esto. 4 Fíjate que el contorno de trazos en la parte superior izquierda es el tamaño de la ventana en comparación con el resto de la disposición. Presiona Ctrl 0 para hacer zoom back to 100%, or View - Zoom to 100% en la cinta. Probablemente has hecho zoom en el medio del lienzo. Use las barras de desplazamiento para navegar desde la parte superior hasta la esquina izquierda del lienzo. También puedes hacer click y arrastrar el botón medio del mouse, para panear alrededor del lienzo. O haz click en la barra espaciadora para conseguir lo mismo si no tienes un mouse con botón en el centro. Añadiendo una nueva capa De acuerdo, ahora vamos a añadir algunos objetos nuevos. Sin embargo, si notamos al pulsar click derecho sobre el lienzo seleccionamos el fondo. Para evitar esto vamos a usar el sistema de capas. Los layouts(lienzos) pueden consistir en multiples capas (layers), que puedes usar para agrupar objetos. Piensa en las capas como en hojas transparentes puestas una encima de otra, con objetos pintados en cada hoja. Esto te permite facilmente orgazinar los objetos que aparecen encima de otros, además las capas pueden ocultarse, bloquearse, aplicarles efecto de parallax y más cosas. Por ejemplo, en este juego, queremos que todo se muestre por encima del fondo, así que podemos crear otra capa para nuestros objetos. Para administrar las capas, haz click en la pestaña Layers Layers tab, que normalmente está junto a la pestaña de Proyecto Proyect bar. 5 Debes estar viendo la capa 0 Layer 0 en el listado (Construct2 cuenta desde cero, porque así trabaja mejor, como en la programación). Haz click en el icono del lápiz y renombra la capa a Fondo, ya que es nuestra capa de fondo. Ahora haz click en el icono + 'add' para añadir una nueva capa para nuestros objetos. Vamos a llamarla Principal. Finalmente, si haces click en el pequeño icono del candado al lado de la capa Fondo, esta capa se bloquea. Lo que significa que no se podrá seleccionar nada que haya en ella. Esto es muy conveniente para nuestro fondo de azulejos, que puede ser fácilmente seleccionado sin querer, y que no necesita volver a ser modificado de nuevo. De todos modos, si necesitaras hacer cambios, sólo tienes que hacer click en el icono del candado de nuevo para desbloquearla. Las casillas de checkbox te permiten ocultar las capas en el editor, pero no necesitamos hacer esto de momento. Tus capas deberían verse así en este momento: Ahora, asegutate de que la capa “Principal” está seleccionada en la barra de capas. Esto es importante- la capa seleccionada es la capa activa. Todos los objetos nuevos que se insertan se insertan en la capa activa, así que si no está seleccionada, podríamos insertar accidentalmente los objetos en una capa equivocada. La capa activa se muestra en la barra de estado, además se muestra en un tooltip cuando colocamos un nuevo objeto - merece la pena echarle un ojo a esto. Añadiendo tiles* *Nota: Tiles se debe traducir como azulejo o valdosa en español, pero aquí se refiere a las piezas que juntas te permiten formar una plataforma (lo verás claramente en las imágenes). Como no me parecía muy correcto llamar a esto "azulejo" he decidido dejarlo como tile, que hace más referencia a una pieza de mosaico. El paquete Jungler Platformer tiene un set de tiles en la carpeta Tiles\Tiles.png. Vamos a importarlos como un objeto sprite y usarlo como un objeto tile. Realizamos los mismos pasos que utilizamos el fondo de azulejo, doble-click y en algún punto del layout e insertas el nuevo objeto. Esta vez escoger Sprite. El ratón se transforma en una cruz de nuevo. Hacer click en algún lugar en el centro de la pantalla. 6 El Editor de Imágenes se abre, con algunas ventanas extras, porque los Sprites pueden ser animados. De todos modos, nosotros no vamos a ejecutar la animación (su velocidad será 0). Lo que vamos a hacer es poner un tile diferente en cada frame de la animación. Entonces podremos modificar el tile que se muestra simplemente cambiando el frame de la animación. Click derecho en algún punto de Los frames de la animación en el panel de abajo, y selecciona Import sprite strip.... Esto nos permite cortar imágenes para las animaciones, que también sirve para los mapas de tiles. Se abre el dialogo de apertura de archivo. Selecciona el archivo Tiles\Tiles.png del paquete de sprites. Construct 2 necesita saber cuántos tiles hay en la imagen. Te habrás dado cuenta que Tiles.png" es una cuadricula de 12x12 tiles. Introduce 12 y 12 y haz click en OK. Dale a Construct 2 un momento para cortar los tiles. Ahora deberías tener los 144 tiles importados como frames de animación. No necesitamos el primer frame vacío, así que click derecho sobre él y selecciona “delete” para borrarlo. 7 Querrás cambiar el tamaño de la ventana Animation Frames y hacerla más grande para ver mejor tus tiles. Además, puedes hacer click derecho en un lugar y cambiar el tamaño de las miniaturas (thumbnails) a Large si prefieres miniaturas más grandes. Por defecto la velocidad de la animación es 5, lo que significa que los tiles iran cambiando. Queremos que los tiles se queden quietos en su frame, así que asegurémonos de que la velocidad de animación sea 0. Selecciona la animación Default en la ventana Animations. La barra de propiedades ahora te muestra las propiedades de la animación. Pon la propiedad Speed (velocidad) en 0. Ahora los tiles no iran cambiando de imagen, se quedan en el mismo frame. Cierra el editor de imagen haciendo click en la X de una de las tres ventanas flotantes. Tu Sprite tile ahora debe estar en el layout. Creando un escenario con tiles Date cuenta que el objeto Sprite tiene una propiedad llamada Initial frame. Podemos usarla para ir cambiado de tile. Selecciona el objeto Tile y cambia su initial frame a 1: 8 Notarás que la imagen cambia para mostrarnos el tile que hay en el frame 1 de la animación. Así es como podemos ir poniendo diferentes tiles en nuestro escenario. Manten la tecla Control y haz click y arrastra el tile. Crearás otro objeto tile. Hazlo de nuevo y tendrás tres tiles en fila. Selecciona el del medio y pon su initial frame en 10. Haz lo mismo para el de la derecha, pero haz que su initial frame sea el 13. Ahora debes tener algo similar a esto: Si te preguntas como saber que numero de frame corresponde a cada tile, simplemente haz doble click en el objeto tile. El editor de imagen se abre de nuevo con la ventana de animación donde puedes comprobarlo. Recuerda que puedes hacer control y arrastrar en un tile para duplicarlo, y así no tener que escribir su initial frame. Habilitando Ajustar a rejilla (snap to grid) Alinear los tiles a mano puede ser un dolor de cabeza. Puedes habilitar la rejilla para hacerlo más fácilmente. En la barra superior, haz click en View y habilita Snap to Grid. La rejilla por defecto tiene un tamaño de 32x32, lo cual está bien. Nuestros tiles son de 128x128 que es múltiplo de 32. Esto nos hará más sencillo ajustar los tiles uno al lado del otro y nos sigue dando cierta libertad de posicionamiento. Intenta arrastrar los tiles ahora. Notarás que se ajustan a una rejilla de 32x32. Ahora debe ser sencillo ajustar tres tiles juntos Añadiendo el sprite del jugador Vamos a añadir un sprite para el jugador. Al igual que antes, damos doble clic en un espacio en el layout para insertar un nuevo objeto Sprite. Cuando la cruz aparezca, haga clic en algún lugar por encima del fondo. Aparecerá el Editor de imágenes. 9 Vamos a importar la tira de sprites para la animación de cuando el jugador está inactivo. Al igual que antes, haga clic derecho en la ventana de cuadros de animación y seleccione la opción Import sprite strip.... Elegimos el archivo de la carpeta Player\Idle\Idle.png. Hay que tener en cuenta que es la tira de sprites completo, no uno de los fotogramas de la animación. También podemos importar la secuencia utilizando frames individualmente desde la opción “Import frames…”, pero por esta vez vamos a realizarlo a esta forma. Debido a que la tira no es cuadrada, Construct 2 realiza una suposición del número de fotogramas. Debe identificar que hay 11 fotogramas. Haga clic en Aceptar y los frames serán importados. *Nota: todavía tenemos el marco en blanco de forma predeterminada en el inicio. Hacemos clic derecho sobre el frame y lo eliminamos. Ahora d tener una secuencia de 11 cuadros para la animación de inactividad del jugador. Recortar un Sprite. Notaremos que el jugador tiene un poco de espacio transparente vacío a su alrededor. Esto es común después de la importación de imágenes. Sin embargo, es una mala práctica que dejarlo aquí - desperdicia memoria y puede hacer que las colisiones sean menos precisas. 10 Hay una manera rápida de deshacerse de él. Mantenemos pulsado la tecla SHIFT y pulsamos el botón Recortar en la barra de herramientas de edición de imágenes. Si no mantienes la tecla Shift, sólo ese frame se recortará, por lo que debes asegúrate de que has presionado la tecla Shift al hacer clic en él para recortar toda la animación. La imagen del personaje del jugador debe estar bien recortada, sin espacio innecesario. Ajuste del punto de origen El punto de origen es el centro, o "punto caliente", del objeto. En los juegos de plataformas es mejor tener el origen en los pies del jugador. Esto significa que si la animación cambia la altura como parte del juego, crecerá del suelo hacia arriba en cambio, si lo dejamos en el centro crecerá tanto hacia arriba como hacia abajo y quedará medio cuerpo debajo del suelo. Para definir el origen, haga clic en el origen y la herramienta Set puntos de imagen en el editor de imágenes. Notaremos un icono circular sobre una cruz sobre nuestro personaje. Ese es el origen. Puede hacer clic en para cambiarlo. Sin embargo, esta vez vamos a ubicarlo en la parte central inferior. 11 Podemos asignarlo rápidamente está pulsando la tecla 2 en el teclado numérico (si Bloq Num está activado). Si usted no tiene un teclado numérico (por ejemplo, algunas computadoras portátiles), puede hacer clic derecho sobre el punto de origen en la ventana Image Points y seleccione Quick Assing -> Bottom. Es una molestia para hacer esto para cada frame, pero por suerte hay otro atajo: en la ventana Image Points, haga clic derecho sobre el punto de origen y haga clic en “Apply to whole animation” (Aplicar a toda la animación). Bucle de la animación Haga clic en la animación por defecto en la ventana de animaciones. Cambiaremos el nombre a Inactivo. En la Barra de propiedades, cambiaremos la velocidad de la animación (Speed) a 9 y establecemos la propiedad Bucle (Loop) en Yes. 12 Haga clic derecho en la animación “Inactivo” en la ventana de animaciones y seleccione Vista previa (Preview). Usted debe ver el personaje que sube y baja con suavidad. ¡Ya está! Cierre la vista previa de la animación y el editor de imágenes. Usted debe ver a su personaje en el Layout. Cambiaremos el nombre del Sprite por “Personaje” en la barra de propiedades para llevar un buen orden. Añadir comportamientos (Behaviors). Construir 2 viene con un montón de comportamientos (behaviors). Esto hace que los objetos funcionen de manera pre-definida que a menudo nos ahorra un montón de tiempo. Es posible realizar todo lo que los comportamientos hacen utilizando el sistema de eventos, pero a menudo resulta difícil y requiere mucho tiempo. Es por eso que los comportamientos son realmente prácticos para conseguir poner nuestro juego en marcha rápidamente. El comportamiento de plataforma (Platform behavior) puede hacerse cargo de la complejidad de los movimientos de plataforma por nosotros. Sin embargo, hay un dato importante para utilizarlo: el comportamiento se debe aplicar a un objeto rectángulo invisible y al personaje del jugador colocado en la parte superior. El comportamiento de plataforma funciona mucho mejor si el objeto con el comportamiento no está animado, ya que el cambio de frame de la animación puede hacer que el objeto en partes se pegue en una pared y hace que se confunda su comportamiento. Además, evita situaciones de colisión tontas como cuando su personaje está colgando de una cornisa por la nariz o algo que lo esté sosteniendo. Así que tenemos que hacer un cuadrado invisible para el primer movimiento. Pulsamos doble clic en el layout para agregar un nuevo sprite, y esta vez lo crearemos desde el editor de imágenes. Pulsamos sobre el bote de pintura y seleccionamos un color que podamos identificar fácilmente dentro del layout, esta vez escojamos el color azul, luego damos clic en cualquier parte del editor de imagen. Debemos ver lo siguiente: 13 Para ahorrar recursos vamos a redimensionar esta imagen, pulsamos sobre el ícono de recortar Al igual que antes, debemos tener el punto de origen en la parte inferior. Procedemos a darle clic en configurar el punto de origen y puntos de la imagen, de nuevo pulsamos la tecla 2 del teclado numérico (o use el menú de asignación rápida) para situar el punto de origen en la parte inferior. Cambiaremos el nombre de este objeto a CajaJugador ya que es la caja para el movimiento y las pruebas de colisión para el jugador. También, en la barra de propiedades, establezca la visibilidad inicial en “Invisible” ya que no la queremos ver en nuestro juego. 14 También vamos a tener que darle el comportamiento de plataforma al objeto CajaJugador para que la detección de colisiones sea más fiable. Pulsamos sobre “Behaviors”, luego en el diálogo que aparece, haga clic en el botón con el ícono de cruz. Damos doble clic sobre el behavior “Platform”. Como porás notar, nuevas propiedades han aparecido en la barra de propiedades bajo el comportamiento de plataforma. Puedes ajustar la configuración del movimiento como la velocidad y la aceleración. Vamos a hacer que los saltos sean un poco más ágiles. Establecemos la fuerza de saltar (Jump strength) a 1100 y la gravedad (Gravity) a 2500. También queremos que la pantalla siga al jugador, así que hacemos clic en el botón de agregar comportamientos (behaviors) y agregamos el “Scroll To”. 15 Una vez creados ambos comportamientos, cerramos el diálogo de behaviors. El comportamiento de plataforma tiene que saber sobre qué objetos puede caer. El jugador caerá a través de los objetos si no poseen el comportamiento sólido. Así que esta vez seleccione el sprite Tile y añadimos un comportamiento, en esta ocasión debemos de elegir el comportamiento sólido. Ahora tenemos que colocar el objeto Personaje sobre el objeto CajaPersonaje. Cambiamos a la pestaña de eventos: “Event sheet 1”. Aquí es donde definimos la lógica del juego usando el sistema de eventos de Construct 2. Crear eventos Los eventos funcionan comprobando si se han cumplido una serie de condiciones. Si es así, las acciones se ejecutan. En nuestro caso necesitamos colocar el personaje del jugador en la parte superior del objeto CajaJugador. Para ello debemos actualizar su posición en “cada momento”. Hacemos doble clic en un espacio en la Hoja Evento para crear un nuevo evento o pulsamos sobre la opción “Add Event”. 16 Haga doble clic en el objeto Sistema, que contiene la condición “Every Tick”. Ahora tenemos un evento vacío que se desarrollará sus acciones en “cada momento” (Every tick): Ahora pulsamos sobre “Add Action”. 17 Queremos darle la posición a nuestro Personaje, así que damos doble clic en “Personaje”. Damos doble clic en la opción “Set position to another object”. Cuando despliegue la ventana pulsaremos sobre la opción <click to choose> y seleccionamos el objeto “CajaJugador”. Dejamos el punto imagen (Image point) en 0 (que significa el punto de origen). Haga clic en "Done". El evento final se debe ver similar a esto: Lo que hemos realizado hasta el momento es colocar nuestro personaje sobre el objeto “CajaJugador” y hacer que tome la posición del mismo ya que es el objeto con la propiedad de plataforma. Para estar más claros y ver cómo funciona presionamos sobre el ícono de “Play” en la parte superior de la ventana o en el botón “Run Layout”. Muévete y salta con las flechas del teclado. Como verás, ¡ya tenemos nuestro juego básico de plataformas en funcionamiento! 18 Si juegas un poco podrás notar algunos problemas: 1. El jugador no gira a la izquierda. 2. Todavía no hay ninguna otra animación. Vamos a corregir estos problemas, primero haremos que el jugador gire a la izquierda y la derecha. Volveremos al Layout utilizando las pestañas en la parte superior. Doble clic en el layout para insertar un objeto nuevo e insertamos el objeto Teclado (Keyboard). Este objeto nos permite que interactuemos en el juego pulsando alguna tecla. En lugar de crear una nueva animación entera con el jugador viendo hacia la izquierda, podemos utilizar la acción predefinida del Construct2 llamada “Set Mirrored”, que reflejará automáticamente el objeto para que parezca que se está viendo a la izquierda en lugar de la derecha. Cambiamos a la ficha de Evento. Vamos a hacer un nuevo evento "On left arrow key pressed" y la acción "Set player mirrored". Hacemos doble clic en un espacio para crear un nuevo evento o en el vínculo Agregar evento. Haga doble clic en el objeto del teclado, ya que contiene la clave A condición presionada. 19 Nos aparecerá todas las condiciones del objeto del teclado. Haga doble clic en “On key pressed” (Al pulsar una tecla). Construir2 tiene que saber qué tecla se quiere detectar. Haga clic en el botón <click choose>, pulsamos la tecla de flecha a la izquierda, a continuación, pulsamos Aceptar. Haga clic en Done. Ahora necesitamos agregar la acción "Set player mirrored". Al igual que antes, primero tienes que elegir el objeto, después tienes que elegir el tipo de condición o acción, entonces se introduce algún parámetro. Pulsamos en el vínculo Agregar acción a la derecha del evento. Hacemos doble clic Personaje. Hacemos doble clic en “Set Mirrored” (Establecer espejo). Deja el estado en “Mirrored” y haga clic en Done. 20 Ahora debemos tener lo siguiente: Construct2 nos permite ahorrar trabajo copiando y pegando eventos, esto es sumamente útil cuando se trata de las mismas acciones solo que por ejemplo cambia la tecla que lo efectúa. Pulsamos clic derecho sobre el evento “On Left arrow pressed”, nos desplegará un menú, luego pulsamos sobre la opción “Copy”. Otra opción es pulsar sobre el evento que queremos copiar y una vez quede resaltado (de color amarillo) pulsamos las teclas Ctrl + C. 21 Ahora hay dos maneras en que podemos pegar nuestro evento, pulsando las teclas Ctrl + V o pulsamos clic derecho sobre el mismo evento y luego en la opción “Paste”. Bien, como vemos hay dos eventos iguales, ahora procedemos a cambiar el evento para que también el personaje vea hacia la derecha. Pulsamos doble clic sobre el evento que pegamos, luego que nos despliegue la ventana pulsamos sobre el botón “Left arrow” y lo cambiamos pulsando la tecla derecha, pulsamos done. Ahora cambiamos la acción, pulsamos doble clic sobre la acción “Set Mirrored” y en la opción State la cambiamos por “Not Mirrored”. Ahora deberíamos ver nuestra hoja de eventos de la siguiente manera: Ahora puedes probar el juego para que compruebes lo hecho hasta el momento. Añadiendo más animaciones Vamos a obtener el resto de las animaciones del jugado. En primer lugar, vamos a añadir más plataformas para que el jugador pueda saltar con lo cual podemos ver más fácilmente cómo funcionan las animaciones. Vuelva a la vista del Layout donde se puede ver los objetos de los jugadores y del piso. Hacemos clic y arrastramos para seleccionar tres baldosas. A continuación, pulse la tecla Control y arrastre los azulejos para copiarlos. Haga esto un par de veces para crear algunas plataformas para que nuestro personaje pueda saltar sobre ellas. Puede ser útil disminuir el zoom para realizar este procedimiento. 22 Ahora que tenemos un lugar para saltar vamos a ir añadiendo el resto de las animaciones del personaje. Recuerde que estamos usando la acción “Set Mirrored” para voltear automáticamente el personaje a la izquierda y a la derecha así que sólo tenemos que importar las animaciones para el personaje que ve hacia la derecha. Haga doble clic en el personaje en el Layout para abrir el editor de animaciones. Hay cuatro animaciones que debemos importar: 1. 2. 3. 4. InactivoACorrer Correr SaltarCorriendo SaltarQuieto Para cada una de estas animaciones, el proceso para añadir ellos es el siguiente: 1. Hacemos clic derecho en la barra de Animaciones (donde creamos la animación “Inactivo”) y seleccione Agregar animación. 2. Introduzca el nombre de la animación. Es fácil de recordar si utilizamos nombres como “InactivoACorrer”. 3. Damos clic izquierdo a la animación para cambiar a ella. Se debe tener un único frame vacío. 4. Hacemos clic derecho en la barra de fotogramas de animación y seleccione la opción “Import sprite strip”. 5. Busque la tira de imágenes correspondiente a la animación. 6. Compruebe que el número de imágenes sea correcto, haga clic en Aceptar. 7. Eliminamos el primer marco vacío. 23 8. En el primer frame, colocar el origen de los pies del jugador. Trate de conseguir que el origen sea el mismo de la animación “Inactivo”. Aplicamos el origen a toda la animación como lo realizamos en la animación “Inactivo” (haga clic en el punto de origen en el cuadro de diálogo Puntos de Imagen y seleccione Aplicar a toda la animación). 9. Mantenga pulsado SHIFT y pulse Recortar para recortar todos los fotogramas importados al mismo tiempo quitando las áreas transparentes innecesarias. 10. En la Barra de propiedades , asegúrese de que cada animación tiene las siguientes propiedades: Speed: 22 para SaltarQuieto, 15 para todo lo demás Loop: Sí para Correr, No para todo lo demás Hacemos esto para cada animación, al final tendremos cinco animaciones para el personaje. Cerramos el editor de animaciones. Ahora necesitamos decirle al personaje que cambie a la animación apropiada en el momento apropiado. Para ello, el comportamiento plataforma proporciona disparadores de animación y eventos que se ejecutan cuando el personaje debe cambiar la animación. Para ello tenemos que utilizar la acción “Set Animation” del personaje. Recuerde que el comportamiento de la plataforma (con los disparadores de animación) se encuentra en el objeto CajaJugador, después establecemos la animación del objeto Personaje. También tenga en cuenta que tenemos una animación InactivoACorrer. Esto significa que cuando empezamos a mover al personaje las animaciones deberían ir así: Detenido: Inactivo Cuando se comience a mover: InactivoACorrer Cuando termina InactivoACorrer: Correr Esto también es fácil de configurar con eventos. Configuración de los eventos de animación Para estos pasos esperamos que usted ya este familiarizado con el proceso de creación de un evento: 1. Seleccione el objeto. 2. Seleccione la condición o acción. 24 3. Opcional: Introducir parámetros si la condición o acción tiene ninguna. Cambiamos de nuevo a la pestaña de Eventos. En primer lugar, vamos a configurar la animación InactivoACorrer, utilizamos la función del comportamiento de la plataforma que detecta si se movió (“Platform On Moved”) del objeto CajaJugador, luego agregamos la acción Set Animation al Personaje y en el cuadro en la opción Animation “InactivoACorrer”, debe quedar así: Cuando la animación InactivoACorrer termina, debemos cambiar a la animación Correr. Podemos hacer esto usando el evento “On Finished” del Personaje, luego acción Set Animation al Personaje y en el cuadro en la opción Animation escribimos “Correr”, debe quedar así: Si el personaje se mueve y luego se detienen tenemos que volver a la animación Inactivo. Podemos hacer esto con el evento “On stopped animation” del objeto CajaJugador realizando los mismos pasos de la acción anterior: Ejecuta el juego. El Personaje ahora debería ser capaz de cambiar la animación cada vez que se detiene y corre, además de la animación InactivoACorrer que se ejecuta cuando el personaje se dispone a correr. Sin embargo, nos falta realizar las animaciones de los saltos. Tenemos dos animaciones para los saltos, también debemos configurar una animación diferente dependiendo de si el personaje está corriendo o no cuando salta. Esto se puede hacer con el siguiente evento: 25 Nótese aquí que hemos utilizado subeventos que aparecen con sangría debajo del evento “On Jump”. Los eventos secundarios se ejecutan después de que el evento "padre" se ha ejecutado. Para tener una idea más clara vamos a describir esta lógica: cuando la el evento “On Jump” (cuando CajaJugador salta) comprueba si CajaJugador se está moviendo, si es así cambie la animación del personaje a "SaltarCorriendo"; de lo contrario, cabiela a "SaltarQuieto". Para hacer una sub-evento, haga clic en el evento principal y seleccione Agregar -> Agregar subevento, o selecciónelo y pulse la tecla S. Para hacer que el evento anterior funcione correctamente, tenemos que invertir una condición (Que aparece con una x roja). Las condiciones invertidas significan lo contrario de lo que afirman. En este caso, el inverso de "Platform is moving" (Si la plataforma se está moviendo) sería " Platform is NOT moving" (Si la plataforma no se está moviendo). Para invertir una condición, primero hay que añadirlo normalmente, luego hacemos clic derecho sobre él y seleccionamos “Invert” (Invertir). Una manera más sencilla es primero selecciónelo y luego pulse la tecla I. Sólo hay una cosa más que debemos de hacer: el jugador permanecerá en su animación “Saltar” después de saltar, incluso después de que toque la tierra, a menos que establezcamos la animación de nuevo a “Inactivo” o “Correr”. Esto es muy similar a lo que realizamos anteriormente: Seleccionamos el evento “Platform On landed” (Cuando la plataforma aterriza), luego agregamos dos subeventos iguales a los anteriores, el único cambio es en la animación que asignamos, “Correr” e “Inactivo”. Debe quedarnos de la siguiente manera: Una vez que hemos realizado estos eventos, ejecutamos el juego. ¡Felicitaciones! ¡Hemos creado un personaje para el jugador totalmente animado! Observe cómo las diferentes animaciones cambian si saltas cuando estas quieto, o saltas al correr. También veras 26 cómo continua corriendo después de tocar tierra, o bien ir queda “Inactivo” al detenerse, dependiendo de si usted está en movimiento o no. Pues bien, ¡es tiempo de crear un enemigo! Agregando un enemigo En este punto ya debes estar familiarizado con el proceso de agregar sprites y animaciones. Así, que por consiguiente no se repetirán los pasos en su totalidad. Vamos a añadir un nuevo sprite para crear un enemigo. 1. 2. 3. 4. 5. 6. 7. 8. Añadir un nuevo objeto Sprite en el Layout. Impórtalo de la carpeta Enemigos\TiraSpritesCaracol. Eliminar el primer frame de la animación que esta vacío. Establecer que la animación se repita (Loop), Speed (velocidad) igual a 15. Establecer el origen hasta la base de la imagen del caracol, y aplicarlo a toda la animación. Recortar todos los fotogramas (shift + cortar). Cierre el editor de animación y cambiar el nombre del objeto para 'SnailEnemy'. Colóquelo sobre una baldosa como se muestra. Ahora queremos implementar la lógica siguiente : - Si el jugador se queda en el caracol de lado, parpadean y se lastiman . - Si el jugador salta en la parte superior del caracol , el caracol es asesinado. Para hacer que el reproductor de flash, seleccione el jugador y añadir el comportamiento de Flash. Recuerde seleccionar el jugador real, no el objeto PlayerBox (ya que es el jugador que queremos visible a parpadear ) . Vamos a utilizar la acción de ' Flash' de este comportamiento en un momento. 27 Cambie a la vista de hoja de eventos, y añadir un nuevo evento: PlayerBox -> En la colisión con otro objeto -> SnailEnemy Este evento se ejecuta cuando chocamos con el SnailEnemy desde cualquier ángulo. Podemos entonces utilizar sub-eventos para probar si el jugador está saltando en la parte superior o corriendo desde el lado . Vamos a ver primero si el jugador está por encima . Añadir un evento sub al evento de colisión : PlayerBox -> Is Falling También hay que probar que el jugador es en realidad por encima del enemigo. Esto puede evitar que el caracol accidentalmente mató si caemos pasado de una cornisa , por ejemplo. Haga clic con el estado ' está cayendo "y seleccione" Agregar otra condición " . Recuerde que todas las condiciones se deben cumplir para el evento a correr. Añadir la condición: PlayerBox - > Comparar Y - > Menor que, SnailEnemy.Y El eje Y se incrementa hacia abajo, por lo que si coordenada Y del jugador es inferior a los de los caracoles , son por encima de ella . En este caso , agregue la acción : SnailEnemy -> Destroy También podemos hacer que el jugador rebotan añadiendo otra acción : PlayerBox -> Establecer como vector Y -> -700 28 'Set vector Y ', básicamente, sólo fija la velocidad vertical del movimiento de la plataforma ; si se establece en un valor negativo coloca hacia arriba ( de nuevo, el eje Y se incrementa hacia abajo ), y 700 es un poco menos de la fuerza de salto de 1100. Así que esto hará que el jugador rebotan como si lo hicieron un salto débil. Nosotros no hemos finalizado: haga clic en el margen del evento 'está cayendo' (el espacio justo a la izquierda del icono PlayerBox) y seleccione Agregar -> Else. 'Else' es una condición especial que se ejecuta si el evento anterior no se ejecutó. Así que este evento se ejecutará si chocamos con el caracol, pero no estábamos saltando en la parte superior de la misma - nos encontramos a ella desde un lado, dicen. En este caso queremos que el jugador se lastime. Agregue la acción Jugador -> Flash -> (valores predeterminados y haga clic en la licencia de Hecho) Recuerde que el comportamiento de Flash está en el objeto Player, no PlayerBox. Aceptar , por lo que el jugador nunca va a morir , ellos sólo flash. Pero tenemos la detección establecido de si saltaron encima o corrieron a un lado. Este tutorial no cubre todas las campanas y silbidos , pero espero que pueda ver dónde crear efectos Kill ( intente crear un sprite ' puf ' en la SnailEnemy cuando es destruido , mediante la acción de la SnailEnemy "objeto de Spawn ' ) y dónde el despegue de la salud (en el caso de que hace que el reproductor de flash - usted puede aprender acerca de la salud el uso de variables de instancia en el tutorial de arriba hacia abajo tirador que es posible que desee mirar después). Vamos a hacer el enemigo caracol se mueve hacia atrás y adelante a través de la plataforma. 29 Mover el enemigo El principal problema con el movimiento del caracol es la forma de detectar cuando se ha llegado al borde de una plataforma. La forma más fácil de hacerlo es con marcadores invisibles ‘borde’. Estos son sólo sprites invisibles que cambiar la dirección del caracol cuando se los toca. También podemos utilizar el comportamiento de la plataforma de nuevo para el caracol. Esto es conveniente porque: - Se puede lograr que se mueve a la izquierda y derecha - Que va a subir y bajar pendientes al igual que el jugador puede - Se caerá repisas si usted quiere que - Si usted quiere hacer un enemigo que salta, usted puede hacer que el enemigo salta automáticamente también el uso de la acción de "control simular" . Añadir el comportamiento Plataforma con la clase Sprite SnailEnemy . Dado que no estamos utilizando animaciones complicadas en este objeto , podemos conseguir lejos con usar el comportamiento plataforma directamente en el objeto sin un objeto invisible 'caja' . Tenga en cuenta si usted hace un juego de plataformas diferentes de enemigos con animaciones complicadas , se debe utilizar la misma técnica de la caja se utilizó en el reproductor. El caracol también necesita saber en qué dirección se está moviendo actualmente - ya sea la izquierda o la derecha. Podemos hacer esto con las variables de instancia. Estos son simplemente números o texto que se almacena en cada instancia del objeto. Si tenemos varios caracoles, cada uno de ellos almacenar sus variables de instancia por separado. Esto les permite tener valores únicos para su salud, dirección de la corriente, y así sucesivamente. Una técnica simple para el control de los enemigos de forma automática es crear una variable de instancia de "acción", que sostiene su estado actual. Por ejemplo, se podría "salir corriendo", "player chase" o "inactivo". En este caso solo necesitamos "izquierda" y "derecha", pero es útil para su instalación de la misma manera. 30 Seleccione el objeto SnailEnemy. En la barra de propiedades, haga clic en Agregar / Editar en "variables de instancia. Aparece un diálogo con una lista de todas las variables de instancia para el objeto. Haga clic en el icono "Añadir" para añadir una nueva. Establezca el nombre de la acción, el tipo de texto, y el valor inicial a la derecha (para mover a la derecha). Haga clic en Aceptar y cierre el diálogo variables de instancia. Cambie a la hoja de eventos. Queremos poner en práctica la siguiente lógica: - Si la acción es "correcto", simular el movimiento de la plataforma manteniendo pulsada la tecla "correcta" para mover el caracol derecha. - Si la acción es "left", simular el movimiento de la plataforma que sostiene la tecla de flecha "izquierda" para mover el caracol izquierda. También: - Si el caracol golpea el EdgeMarker, voltear su acción (si es "izquierda" en posición "correcta", y si "derecho" el valor de "izquierda"). Podemos establecer el movimiento con los siguientes dos eventos: Evento: SnailEnemy -> Comparar variable de instancia -> acción igual a "la derecha" (utilice comillas dobles para indicar el texto) 31 Acción: SnailEnemy -> Simular Control -> Derecha Debe ser fácil de hacer lo mismo por la izquierda. También queremos que la imagen de espejo izquierdo y derecho como lo hicimos para el jugador. Así que añadir SnailEnemy -> Set refleja en el evento de "izquierda", y SnailEnemy -> No conjunto reflejado en el evento "correcta". Usted debe terminar con esto: Ahora para voltear la dirección del caracol en los bordes: Evento: SnailEnemy -> En la colisión con otro objeto -> EdgeMarker Subevento: SnailEnemy -> Comparar variable de instancia -> acción igual a "la derecha" Acción: SnailEnemy -> Valor de ajuste -> acción de "izquierda" Subevento: Else Acción: SnailEnemy -> Valor de ajuste -> acción de "derecho" Es importante utilizar más aquí, porque los eventos se ejecutan desde arriba hacia abajo. Si en vez de 'else' dijimos 'acción igual a "izquierda" ", cuenta el caso anterior habría simplemente configurarlo para eso. Por lo que sólo había puesto las cosas bien de nuevo, que no tiene efecto general. Mediante el uso de 'else', evitamos que el segundo evento en funcionamiento si el primero era cierto. Ejecute el proyecto. Observe el caracol se mueve hacia atrás y adelante en su plataforma. Esto hace que sea un poco más difícil de saltar en! Este es un sistema muy rudimentario "AI", pero espero que usted puede imaginar que se podría crear enemigos más inteligentes, controlando el movimiento con más eventos, posiblemente, incluso permitiendo que se caen de los bordes, o utilizando otros marcadores para provocar un salto para que sea verá como el enemigo sabía que saltar a una plataforma. Trate de crear una plataforma con dos caracoles en él. Observe que controlarse a sí mismos de forma individual, ya que cada uno tiene su propia variable de instancia la acción individual que 32 sostiene su estado actual. Esperamos que usted puede comenzar a ver la importancia de las variables de instancia son para el control de los casos de forma independiente - que no todos tienen que estar haciendo exactamente lo mismo que los demás! Jump-thru objetos Si coloca algunas baldosas alrededor, usted podría notar si saltas a una baldosa de debajo se golpea la cabeza en ella y vuelven a caer. ¿Qué pasa si usted quiere hacer las plataformas se puede saltar a partir de debajo? Esto es lo que hace el comportamiento Jump-thru. Al igual que el comportamiento Solid usted puede estar parado en él con el comportamiento de la plataforma, pero el jugador puede saltar a él desde abajo. Vamos a hacer una versión de Jump-thru de nuestro objeto de baldosas. Haga clic en el objeto de baldosas y seleccione el tipo de objeto Clonar. Esto hará que un tipo de objeto independiente, Tile2, que puede tener diferentes comportamientos. Eliminar el comportamiento sólido y agregar el Jump-thru comportamiento. Utilice azulejos 134 y 135 para hacer un salto-por así: Ejecutar el juego. Observe cómo se puede saltar a él desde abajo. Esperemos que ahora sabe lo suficiente para diseñar un nuevo nivel entero! Aquí está un diseño de nivel está reducida junté rápidamente al escribir el tutorial. Le puede ayudar a mostrar algunas de las 33 posibilidades. Observe el uso de los marcadores a través de plataformas para mantener a los caracoles en sus plataformas: Paralax Trate de añadir un efecto de paralaje para que el fondo parece más lejos. Seleccione la capa de fondo de la barra de capas. En la barra de propiedades, establezca la propiedad Parallax a 50, 50 (que significa la mitad de la velocidad de desplazamiento). Observe cómo el fondo se mueve más lentamente, dando una sensación de distancia. El uso de múltiples capas, todas con diferentes tipos de paralaje puede crear casi 3D sentir a un juego en 2D Conclusión Este tutorial cubre mucho. Es posible que desee revisar un poco de tiempo . Éstos son algunos de los puntos clave: - Para el comportamiento del jugador Plataforma , añadir siempre el movimiento de una caja invisible sin animaciones. Coloque el visible , reproductor de sprites animados en la parte superior de la caja. Esto evitará animaciones causando problemas técnicos en el movimiento de la plataforma . - Los niveles pueden ser construidos de azulejos. - El conjunto reflejado acción le ahorra tener que hacer copias de espejo de todas las animaciones. - Animaciones a veces necesitan un poco de trabajo para ser importado, establecido con la velocidad adecuada y las propiedades de bucle , con el conjunto de origen correcto, y todos los marcos recortada . También es posible que quiera cambiar las máscaras de colisión , aunque esto no estaba cubierto . - Los enemigos también se pueden controlar con el comportamiento Plataforma . Establecer controles por defecto en No y utilizar la acción de control Simular para controlar automáticamente el movimiento . - Se puede detectar si el jugador está cayendo sobre un enemigo en lugar de correr a ellos por medio de pruebas , si ambos están bajando y por encima de los enemigos en el eje Y al chocar . De lo contrario (usando 'Else ' ) , se deben ejecutar en el enemigo , y deben hacerse daño . - Las variables de instancia pueden almacenar números o texto único para cada instancia de un objeto . Esto ayuda a los objetos de control individual , que es útil para " AI " . - Las balizas de borde son una manera rápida y fácil de hacer enemigos van y vienen en una plataforma . - Jump -thru son plataformas que se pueden se subieron a la parte inferior. 34 - Parallax es un efecto fácil e intrigante para agregar a los juegos de plataformas . Obviamente no hemos hecho un juego de plataformas lleno! Sin embargo , este tutorial ha cubierto las partes más difíciles, y los elementos esenciales importantes cada creador juego de plataformas debería saber de antemano . A partir de aquí esperamos que pueda tener una idea de cómo el resto de un juego de plataformas va a venir juntos. Se necesita tiempo para familiarizarse con una herramienta de desarrollo complejo con Construct 2 . Sin embargo , la experimentación puede ser divertido, y le enseñará mucho ! Así que pasar un rato jugando , rompiendo cosas , ajustar las cosas, y ver lo que puede ocurrir. Plataformas feliz! Otras lecturas Usted puede estar interesado en la guía del principiante alternativa, que es un tutorial para hacer un juego de acción de arriba hacia abajo . Cubre algunos puntos diferentes como la fabricación de un heads-up display , y se va a las variables de instancia en algo más de detalle también. Estas son las dos cosas que se pueden aplicar a los juegos de plataformas , por lo que sin duda sería útil ir a través de ella , además de este tutorial. ¿Quieres añadir música y efectos de sonido ? Consulte Sonidos y música en el manual. Si desea saber más acerca de cómo funcionan los eventos en Construct 2 , consulte la sección sobre Cómo Eventos Trabaje en el manual. Es muy recomendable para que pueda ponerse en marcha rápidamente con sus proyectos ! Entonces para aún más información, no olvide que hay una documentación completa en el manual. 35