Parte 9: Manteniendo la nave en el escenario

Paso 66: Vamos a impedir que la nave salga de la pantalla, para ello crearemos un nuevo evento when updating, usando un bloque if y otro otherwise if.

El primero comprobará si la posición de la nave está mas allá del borde izquierdo del escenario(la posición X sobre 0), el segundo comprobará si nos pasamos del borde derecho de la escena (a valor X igual al ancho del escenario).

Nota que necesitaremos tener en cuenta el ancho de la nave.  Stencyl mide la posición X del actor desde el borde mas a la izquierda del gráfico, que es justo lo que le restaremos a la ancho de la nave.

Paso 67: Para nuestras condiciones, necesitamos comparar dos números; la posición de la nave y borde izquierdo o derecho de la pantalla. Escogemos  los bloques Greater Than y Less Than de la palette. Puedes encontrarlos en la categoría  Flow, subcategoría Conditions, en la sección Equality.

Pon el bloque Less Than (marcado como < ) en espacio vacío superior del bloque. Pon el boque Greater Than (marcado como > ) en el segundo, el bloque Otherwise If permanecerá vacío.

 

Paso 68: Como dijimos previamente, uno de los números que vamos a comparar es la posición del a nave. Necesitamos un bloque que nos lo diga, y podemos encontrarlo debajo de la categoría Actor, subcategoría Position, sección Position; visible como x of Self.

Queremos arrastrar estos dos bloques fuera; Uno por cada bloque de comparación( los bloques < y >). Necesitamos un bloque en la parte izquierda de ambos. Necesitamos un cambio mas para estos dos bloques, queremos que digan “x (on screen)” en lugar de solo “x”.  Podemos clickar en cada uno de ellos y cambiarlos fácilmente con el menú desplegable que aparece.

 

Paso 69: Ahora que tenemos nuestro primer valor a comparar, necesitamos un segundo valor contra el que compararlo. Para nuestra primera comparación solo vamos hacerlo contra el valor 0; el valor de X es cero cuando estamos en el borde izquierdo de la pantalla. Todo lo que haremos será escribir 0 dentro de la mitad derecha del bloque Less Than.

la segunda comparación, Greater Than, será algo más complicada. Como habrás notado, tenemos que tener en cuenta el ancho del actor en la parte derecha. Cogemos los siguientes bloques y los dejaremos en el área de trabajo.

  • Minus (está en Numbers & Text > Math > Arithmetic)
  • Screen Width (está en Scene > View > Screen Bounds)
  • Width of Self (está en Actor > Properties > Size)

Necesitaremos arrastrar  Screen Width dentro de la parte izquierda del bloque Minus, y el  Width of Self dentro de la parte derecha. El resultado será un conjunto de bloques como la imagen que sigue.

Necesitamos arrastrar este conjunto de bloques dentro de la otra mitad de la segunda condición. Asegúrate de arrastrar desde el bloque Minus sino cojeras partes del bloque solo.

Así quedaría:

Paso 70: La meta de poner estas dos condiciones es identificar cuando la nave se va demasiado lejos y sale de los bordes de la pantalla. Desde ahora tendremos estas condiciones controladas, ahora podremos decir que ocurre cuando sean ciertas.

Dado que nuestro objetivo es mantener a la nave dentro de la pantalla, queremos resetear la posición de nuestra nave de regreso a la pantalla cuando ocurra. Para hacerlo necesitamos dos bloques  Set X to [ ] for Self; uno por cada condición. Arrastraremos un par y los colocaremos.

Paso 71: Como en la comparación de nuestra condición, el primer valor es fácil. Necesitamos poner 1 dentro del bloque para que se lea Set X to 1 for Self. Implemente ponlo, si nuestra nave etá en la posición X cero o menos (mas a la izquierda del borde izquierdo de la pantalla), forzaremos a que se recoloque en la posición 1. Esto previene que se salga de la pantalla.

DE nuevo, como en la segunda comparación de nuestra condición, el segundo valor requiere mas trabajo. Vamos a necesitar los siguientes bloques, recuerda que puedes usar  ALT-arrastrar algún bloque existente para duplicarlo; debes soltar el bloque por completo fuera de la comparación.

  • Minus
  • Screen Width
  • Width of Self
  • Minus (si, necesitamos otro)

De nuevo, necesitaremos sustraer el ancho de la nave del ancho de la pantalla. Esta vez, pondremos el conjunto de bloques dentro del saldo izquierdo del segundo bloque Minus. En el lado derecho, pondremos un valor 1 así nuestra nave se colocará a un pixel del borde derecho de la pantalla.

Paso 72: Necesitamos coger el conjunto de bloques e insertarlos dentro del segundo bloque Set X to [ ] for Self en nuestras condiciones. El conjunto completo debería parecerse a esto:

Graba tu trabajo y prueba el juego

Continúa en la parte 10.