Guía para principiantes de Construct 2

4

Index

Tagged

Contributors

Stats

372,838 visits, 429,920 views

Tools

Translations

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 26 Aug, 2014. Last updated 25 Feb, 2019

Las variables de instancia

Las variables de instancia permiten que cada monstruo almacene su propia salud. Una variable es simplemente un contenedor que almacena un valor que puede variar según las circunstancias. En el caso de "variables de instancia" se asignan por separado a cada instancia, de ahí su nombre.

Vamos a asignar una variable de instancia health (salud) a nuestro monstruo. Recordar que sólo tenemos un tipo de objeto "monstruo" y lo que aparece en pantalla son instancias de ese objeto. Por lo tanto, haz clic en el monstruo en la barra de objetos o en el barra de proyecto. También podrías regresar al layout y seleccionar un objeto monstruo. El caso, es mostrar las propiedades del monstruo en la barra de propiedades. Doble clic sobre Instance variables > Add/edit.

Aparecerá el cuadro de diálogo Variables de Instancia. Es similar al cuadro de diálogo de Comportamientos que hemos visto antes, pero en su lugar este nos permite añadir y cambiar las variables de instancia del objeto. Clic sobre la cruz Add New para añadir una nueva variable de instancia.

En el cuadro de diálogo que aparece, escribe health (salud) en el nombre, deja Type como Number y en Initial value introduce 5 (como se muestra). De este modo se le da una salud 5 inicial a cada monstruo. Al recibir un impacto de bala le vamos a restar 1 de salud y cuando esta llegue a cero, lo daremos por muerto, por lo tanto lo destruiremos.

Una vez hecho, clic en Aceptar. Ten en cuenta que la variable aparece ahora en el cuadro de diálogo 'variables de instancia' y también en las propiedades del monstruo. (Puedes de esta forma, cambiar rápidamente los valores iniciales en la barra de propiedades, pero para añadir o eliminar variables tendrás que hacer clic en Agregar / Editar.)

Cambiando los eventos

Volvamos al editor de eventos. De momento, los monstruos quedan muertos difuntos, tan pronto como reciben un impacto de bala. Vamos a cambiar esto, restando a su "salud" una unidad tras cada impacto.

Vamos a editar el evento Bullet: on collision with Monster. Puedes ver que tenemos como acción el "destruir monstruo". Vamos a sustituir esto por "restar 1 a la salud". Haz clic con el botón derecho en esta acción y clic en Sustituir .

Nos aparece el mismo cuadro de diálogo que ya vimos al añadir una nueva acción. En esta ocasión se va a sustituir por la acción que vamos a escoger a continuación. Escoge Monster - Subtract from (en la categoría variables de instancia) -> variable de instancia "health" y como valor ponle 1 . Clic en Done. La acción quedará como sigue:

Ahora, cuando los monstruos sean alcanzados por una bala, perderán una unidad de salud y la bala explotará (demasiada explosión en este caso, hay que reconocerlo). Pero nos falta por hacer un evento para que los monstruos queden destruidos al agotarse su salud.

Añadir, por tanto, otro evento:

Condición: Monster -> Compare instance variable -> Health, Less or equal , 0

Acción: Monster -> Spawn another object -> Explosión, Layer 1

Acción: Monster -> Destroy

¿Por qué "menor o igual que 0" en lugar de "igual a 0"? Supón que tras el impacto en lugar de restarle una unidad de vida, le restamos 2 (por una mejora del arma, por ejemplo). Como la vida inicial de cada monstruo la hemos establecido en 5, la salud seguiría la siguiente serie a cada impacto: 5 , 3 , 1 , -1 , -3 ... como vemos, en ningún momento su salud es exactamente igual a cero , por lo que la condición no se cumpliría y nuestro monstruo no moriría! Por lo tanto, es una buena práctica utilizar "menor o igual" para asegurarnos de la muerte de los monstruos al agotarse su nivel de salud.

Prueba el juego. Ahora verás como los monstruos desaparecen, al ser alcanzados 5 veces!

Y esto para cada monstruo, cada uno de forma independiente del resto.

Llevando la puntuación

Vamos a crear un sistema de puntuación de modo que el jugador pueda saber lo bien que lo está haciendo y cual es su puntuación final. Vamos a necesitar de una nueva variable para esto. La llamaremos "Score" (puntuación). Se podría pensar en usar una variable de instancia y asignarla al jugador. En principio no parece mala idea, pero tenemos que tener en cuenta que este tipo de variables están asignadas a un objeto. Si el objeto desaparece, también lo hará su variable. En nuestro caso, al morir el jugador, nos quedaremos sin puntuación.

En su lugar, podemos usar una variable global. Al igual que una variable de instancia, una variable global puede almacenar valores bien sean de texto o números. La ventaja de este tipo de variables es que no depende de ningún objeto, ni tampoco depende de ningún layout, de modo que estará a nuestra disposición para todos los niveles de nuestro proyecto. De ahí el nombre de "global". Se trata en definitiva de variables asignadas al proyecto.

Haz clic derecho en un espacio en blanco, en el editor de eventos. Selecciona Add global variable (Añadir una variable global).

Introduce Score como nombre. Los otros parámetros, dejarlos como están por defecto. Se creará una variable global de tipo numérico con valor inicial 0.

Ahora la variable global aparece en una línea en la hoja de eventos. Sin embargo, como ya hemos dicho, será accesible desde cualquier otra hoja de eventos de cualquier layout para todo el proyecto.

Nota: también existen variables locales que tienen un acceso más restringido, pero que ni usaremos ni trataremos en este tutorial.

Vamos a darle al jugador un punto por cada monstruo que aniquile. En nuestro evento "Monster: health less or equal 0" (cuando el monstruo muere), hacer clic en Añadir acción y escoge System -> Add to (en variables globales y locales) -> Score , value 1. El evento nos quedará:

Con esto, nuestro juego, queda dotado de un sistema de puntuación, que inicialmente parte de 0 y que se verá incrementado en una unidad por cada monstruo que muera en manos de nuestro jugador. Todavía no lo podemos ver, pero lo vamos a subsanar a continuación, haciendo que aparezca en pantalla a través de un objeto de texto.

  • 2 Comments

  • Order by
Want to leave a comment? Login or Register an account!