Lab 1945 Air Combat
Lab 1945 Air Combat
Lab 1945 Air Combat
Creando el Room
Nuestro juego toma lugar sobre el mar, por lo que necesitamos una imagen de background que
luzca similar al mar. Para crear el background, seleccione la opción background del menú de la
izquierda, dé click derecho, después seleccione Create background, posteriormente dé click al
botón Load Background y busque el archivo water en la carpeta Resources dentro de la carpeta
Scrolling Shooter. Cambie el nombre por back_water.
Ahora crea el Room. Para crear un room dar click derecho del mouse sobre la opción Rooms del
menú de la izquierda y selecciona Create Room, selecciona la pestaña background que aparece en
la parte superior izquierda, en esta sección realizaremos tres cambios: Primero como nosotros
queremos llenar todo el room con el background tenemos que desmarcar la caja de chequeo
Draw background color, Segundo, en la sección media dar click al ícono de menú y selecciona
la imagen back_water. Finalmente nosotros queremos hacer que el background se mueva, para
dar la sensación de movimiento, para esto, en la parte inferior en la casilla de Vert. Speed
debemos teclear 2, la forma debe lucir como:
4
GRABA TU JUEGO usa el nombre AirCombat_1 En este momento puedes ejecutar el juego y verás
cómo te dará la ilusión de movimiento.
Añadiendo islas
Para fortalecer la sensación de movimiento nosotros añadiremos una pocas islas al mar. Si las
colocamos directamente en el room éstas permanecerán fijas y su aparición será predecible, por
este motivo, nosotros seleccionamos darlas de alta como objetos y así poder manipularlas más
libremente, Primero crearemos tres sprites con las siguientes imágenes (las imágenes se
encuentran en la carpeta Resources dentro de la carpeta Scrolling Shooter) :
No olvide darles nombres apropiados: spr_island1, spr_island2, spr_island3, como nosotros nunca
usaremos estas imágenes para checar colisión asegúrese de desmarcar la caja de Precise collision
checking.
Para cada una de las islas nosotros crearemos ahora un objeto, no olvide darles nombres
apropiados obj_island1, obj_island2, obj_island3. En la creación del objeto en el evento create
seleccionaremos Set the vertical speed para darle al objeto la misma velocidad del background 2,
así nuestras islas parecerán formar parte del background. Para asegurarnos que todos los objetos
estén sobre las islas, nosotros le daremos a los objetos de las islas un Depth (profundidad) de
10000. (Debes ejecutar el GameMaker en modo avanzado (Advanced Mode) para ver esta opción,
cambia de modo si estás trabajando en Modo simple (Simple mode) sólo seleccionando la opción
en el menú File). Los objetos con más alta profundidad son dibujados primero, las instancias con
baja profundidad son dibujados arriba de ellos, por eso las islas tienen una alta profundidad, así
los aviones aparecerán arriba de ellas y darán la sensación de volar por encima de las islas.
5
Una cosa más que necesitamos realizar es que cuando una isla desaparezca en la parte inferior del
room, reaparezca en la parte superior. Para lograr esto en el evento Step de la isla nosotros
evaluaremos si la isla desaparece en la parte inferior, si es así, la reubicaremos en la parte
superior. Seleccionar Test Variable que se encuentra dentro de la pestaña control del lado
derecho de la pantalla. Nota: La variable y indica la posición vertical de la instancia (Un valor de 0
corresponde a la parte superior del room).
La variable room_height indica la altura del room, por lo tanto la isla desaparece en la parte
inferior cuando la y es mayor que la altura del room (room height).
Para mover la isla a la parte superior del room nosotros usaremos la acción jump to a position
, la cual se encuentra dentro de la pestaña move del lado derecho de la pantalla, pero a
nosotros nos conviene que la isla se coloque en una posición aleatoria en la parte superior del
room, así al jugador le parecerá que son islas diferentes.
¿Pero cómo dar un valor aleatorio? Para esto utilizaremos la función random(). Una función
calcula un valor (o desempeña una acción) basado en el valor de ciertos argumentos. Los
6
argumentos son escritos entre los paréntesis del nombre de la función. GameMaker tiene muchas
funciones. Pero nosotros por ahora utilizaremos la función random(). En la acción jump to a
position nosotros usaremos random(room_width) como la coordenada x, esto creará un valor
entre 0 y el ancho del room y usaremos -65 para la coordenada y para asegurarnos que la isla
reaparezca exactamente en la parte superior del room.
Estos pasos se deben repetir para cada una de las islas (obj_island1, obj_island2, obj_island3). Una
vez terminado de definir los tres objetos de las islas hay que colocarlos en el room, selecciona el
room dándole doble click a la opción Rooms (menú de la izquierda), una vez que visualices el
room, selecciona la pestaña superior objects y selecciona en el ícono de menú que aparece en la
parte media, el objeto obj_island1, una vez seleccionado verás que aparece la imagen, ahora dá
click sobre el room para colocar una instancia de la isla, el lugar donde coloques la isla es de tu
elección, repite el proceso con las otras dos islas. El room debe quedar similar a:
GRABA TU JUEGO. Ahora ejecuta el juego y corrobora que las islas al desaparecer en la parte
inferior del room aparezcan en la parte superior en diferentes lugares.
7
El Avión Principal
En este momento el background está listo, es tiempo de enfocarnos al avión que el jugador
controlará. Primero necesitamos un sprite para el avión. Nosotros usaremos un avión de propela,
para dar a la propela la ilusión de movimiento, usaremos un sprite de tres imágenes que es
exactamente igual excepto por la propela, buscar la imagen myplane_strip3 que se encuentra en
la carpeta Resources dentro de la carpeta Scrolling Shooter. Al crear este sprite es importante
darle un nombre apropiado spr_myplane así como establecer el valor de la coordenada X y Y del
origen (Origin) a 32, Estos valores los puedes teclear o bien dar click al botón Center. Con esto nos
aseguramos que el origen del sprite sea el centro del avión, esto nos permitirá que cuando se
dispare la bala dé la impresión que se dispara del centro del avión.
Ahora vamos a añadir el objeto del avión, proporcionar un nombre adecuado obj_myplane, el
sprite que vamos a seleccionar es el de avión principal, Le daremos una profundidad (Depth) de -
100 para asegurarnos que esté por encima de las balas y las islas.
Vamos a trabajar en la flecha izquierda. Añadir el evento keyboard para el manejo de la tecla,
seleccionar Left.
8
Ahora tenemos que checar si la variable x es mayor que 40, para esto en la sección de acciones,
seleccionamos la pestaña control y posteriormente elegimos Test Variable. Si este chequeo
regresa true nosotros moveremos el avión una pequeña distancia a la izquierda partiendo de su
actual posición. Para realizar este movimiento usamos una acción jump to a position y movemos -
4 para la coordenada x y 0 para la coordenada y. No olvides marcar la caja Relative, para que parta
de su posición actual.
Para la flecha derecha Right ,nosotros hacemos lo mismo , sólo que checamos si la x es menor que
room_width-40 y el salto jump to a position es relativo en x colocamos 4 y en y 0, Para la flecha
arriba Up, nosotros vamos a evaluar la variable y si es mayor que 40 si nos regresa true el salto
jump to a position será 0 en la coordenada X y -2 para la coordenada y, no olvide marcar la caja
de Relative. Para la flecha abajo Down, vamos a evaluar la variable y si es más pequeña que
room_height-120, si nos regresa true realizaremos el movimiento hacia abajo con la acción Jump
to a position marcando 0 en la coordenada x y 2 en la coordenada y, no olvide marcar la caja de
Relative.
9
Nuestro avión puede volar ahora. Coloca una instancia del avión en el room , GRABA TU JUEGO y
ejecútalo, tendrás la ilusión de volar por arriba del mar.
Enemigos y Artillería
¿Pero qué es un juego de Ataque Aéreo sin balas y enemigos? Extenderemos nuestro juego
incluyendo algunos aviones enemigos y un cañón en el avión principal que podamos disparar.
Iniciaremos con el cañón. Necesitaremos una imagen de una bala de cañón, para esto añadiremos
un sprite con la imagen bullet que se encuentra en la carpeta Resources dentro de la Carpeta
Scrolling Shooter, no olvide darle un nombre adecuado spr_bullet y marcar en las coordenadas
Origin el centro de la imagen, en este caso 16, tanto para la coordenada X como para la
coordenada Y.
Ahora crearemos el objeto para el sprite spr_bullet, le daremos el nombre obj_bullet, hay que
definir una profundidad Depth igual a 0, para que aparezca abajo del avión pero arriba de las islas.
Hay que especificar un evento Create y para este evento la especificación de la velocidad vertical,
usando la acción Set the vertical speed igual a -8, esta acción se encuentra dentro de la pestaña
move del menú de la derecha, esta definición logra que la bala se mueva en dirección hacia arriba.
Para evitar que más y más balas se mantengan dentro del room, nosotros debemos destruir la bala
una vez que sale del room. Esto lo podemos realizar añadiendo un evento Step y dentro de él
añadimos la evaluación de la variable y, si es más pequeña de -16 si el resultado es true nosotros
destruiremos el objeto usando la acción Destroy Instance que se encuentra dentro de la pestaña
main1 del menú de la derecha .
10
La bala deberá ser disparada cuando el jugador presione la barra espaciadora, si el jugador
mantiene presionada la barra espaciadora dispararía en forma continua, pero nosotros no
queremos eso, ya que esto haría el juego demasiado fácil. Nosotros solamente queremos permitir
que el jugador dispare 2 balas cada segundo, esto es una bala cada 15 steps. Para lograr esto
necesitamos una variable a la cual nombraremos can_shoot. Da doble click al objeto obj_myplane
que es el de nuestro avión principal, añade un evento Create y establece la variable can_shoot a 1
utiliza la acción set variable que se encuentra en la pestaña control del menú de la derecha.
En este mismo objeto añade el evento keyboard y selecciona la barra espaciadora <space>, para
disparar tenemos que evaluar la variable can_shoot, usar Test Variable can_shoot si es igual a 1, si
nos regresa true, crearemos una instancia de la bala justo en frente del avión con la acción create
instance of object obj_bullet, esta acción se encuentra en la pestaña main1, posición relativa(0,-
16), también estableceremos la variable acción set variable de la pestaña control, can_shoot a 0
indicando que no podemos disparar otra bala hasta que transcurra ½ segundo, para esto usaremos
una alarma de 15 steps Set Alarm 0 to 15, esta acción está dentro de la pestaña main2 del menú
de la derecha.
11
Una alarma va disminuyendo un tick en cada paso, cuando la alarma alcanza el valor de 0 el
evento dentro de la alarma ocurrirá, en este evento nosotros estableceremos de vuelta el valor de
1 a la variable can_shoot, indicando que podemos volver a disparar.
Tú puedes cambiar la velocidad con la cual se dispara, cambiando el valor del reloj de la alarma.
GRABA TU JUEGO. Puedes ejecutar el juego ahora y si accionas la barra espaciadora verás el
disparo.
Ahora vamos a introducir al primer avión enemigo. Será un avión pequeño que simplemente
vuele hacia abajo, no podrá disparar pero cuando choque con el avión principal el jugador perderá
el juego. Para este avión hay que añadir un sprite con la imagen enemy1_strip3 que se encuentra
en la carpeta Resources dentro de la carpeta Scrolling Shooter, dar el nombre de spr_enemy1,
Cambia las casillas de Origin al centro de la figura en este caso para la coordenada x 16 y para y 16.
12
Ahora crea el objeto para este sprite, asígnale el nombre obj_enemy1, hay que añadir un evento
Create y asociarle a este evento la acción Set the vertical speed asignar una velocidad de 4 para
que vuele hacia abajo.
Cuando el avión alcance la parte inferior del room hay que hacer que reaparezca en la parte
superior en un lugar aleatorio, es exactamente lo mismo que realizamos con las islas, recuerda que
hay que añadir el evento Step y en las acciones evaluar la variable y si es mayor que
room_height+32 si nos regresa true hay que utilizar la acción Jump to position
(random(room_width),-16).
13
Ahora necesitamos definir dos eventos de colisión, el evento de colisión con la bala, con la cual
destruimos al avión enemigo y el evento de colisión con el avión principal con el cual se destruirá
el avión principal y terminará el juego.
Iniciaremos con el evento de colisión con la bala. Necesitamos una serie de acciones para esto,
pero primero necesitamos un sonido para una pequeña explosión y una imagen (sprite) que
indique la explosión. Para crear un sonido, da click derecho a Sounds y selecciona Create Sound,
ahora carga el archivo snd_explosion1 que se encuentra en la carpeta de Resources dentro de la
carpeta Scrolling Shooter. Dar el nombre de snd_explosion1
Para tener el sprite de la explosión tenemos que crear un nuevo sprite y asociarlo con la imagen
explosion1_strip6 que se encuentra en la carpeta de Resources, cambia el nombre por
spr_explosion1, cambia el Origin al centro de la imagen para este caso los valores son 16 para la
coordenada x y 16 para la y.
14
Una vez que tenemos el sprite hay que crear el objeto de la explosión, llámalo obj_explosion1,
asocia el sprite de la explosión, lo único que hará este objeto es que cuando termine la animación
de la explosión destruya la instancia. Para hacer esto necesitamos un evento llamado Animation
end que se encuentra bajo la sección de other, y coloca dentro de este evento la acción Destroy
the instance.
Una vez que tenemos el sonido y el objeto explosión listos, nosotros vamos a poder poner el
evento collision para la colisión entre el avión enemigo y la bala de cañón, para hacer esto
selecciona el objeto obj_enemy del menú de la izquierda dándole doble click, añade un evento de
collision y selecciona el obj_bullet.
15
Las acciones que se colocarán aquí son: primero ejecutaremos el sonido de la explosión
seleccionando la acción Play sound y el archivo snd_explosion1.
Después destruiremos la bala, empleando para ello la acción Destroy the instance, pero en la
parte superior seleccionaremos Other , para que aplique a la bala.
Después crearemos una instancia Create instance del objeto obj_explosion1 relativa a la posición
(0,0), que es la misma posición del avión enemigo.
16
Nosotros no destruiremos el avión enemigo, sino que lo colocaremos en otra posición aleatoria
Jump to position (random(room_width),-16) en el room, para que luzca como un nuevo avión
enemigo.
17
Las acciones dentro del evento collision quedarían así:
Ya teniendo el sprite y el sonido de la segunda explosión, tenemos que crear un nuevo objeto, dar
al objeto el nombre de obj_explosion2, asocia el sprite que acabamos de crear, en la sección de
eventos añade el evento Animation end, que se encuentra dentro de la sección Other y las
siguientes acciones: Primero destruiremos la instancia Destroy the instance para hacerlo invisible.
18
Después dejaremos pasar un momento para dar tiempo a que el sonido de la explosión termine,
usar Sleep 1000 miliseconds que se encuentra en la pestaña main2.
La siguiente acción es mostrar la lista de los más altos scores Show the highscore table, esta
acción se encuentra en la pestaña score, y permitirá que el jugador teclee su nombre si es de los
más altos scores.
Finalmente nosotros daremos un Restart al juego, esta acción se encuentra en la pestaña main2.
Las acciones dentro del objeto obj_explosion2 quedan así:
Ahora regresemos al objeto obj_enemy1 para añadir un evento de colisión pero ahora con el
avión principal obj_myplane, las acciones que colocaremos para este evento son: Primero
cambiamos la instancia del avión principal a la explosión2, seleccionar Other, Change instance,
esta acción se encuentra dentro de la pestaña main1 y seleccionamos obj_explosion2.
19
Después ejecutaremos el sonido de la segunda explosión Play sound snd_explosion2
Lo que resta es añadir una instancia del avión enemigo al room, pero sólo tendríamos un avión
enemigo, para darle mayor complejidad teniendo más aviones enemigos vamos a crear un nuevo
objeto llamado controller_enemy el cual controlará la creación de aviones enemigos, nosotros
haremos este objeto invisible, desmarcar la caja Visible del objeto. No necesitamos ningún sprite
asociado a este objeto.
20
Añadiremos un evento Create y dentro de este evento las siguientes acciones: Primero crearemos
una instancia de un avión enemigo Create instance de obj_enemy1, haremos que este avión se
sitúe en la parte superior de la pantalla, para esto especificaremos el valor para la coordenada x
en random(room_width) y para la coordenada y en -16.
En el evento de esta alarma crearemos una nueva instancia de un avión enemigo Create instance
de obj_enemy con x random(room_width) y en y -65
21
También estableceremos el reloj de la alarma de nuevo esta vez en 500 pasos, Set Alarm 1 to 500.
Esto es todo. Tendremos un solo avión enemigo y después de 200 pasos, cerca de 7 segundos, un
segundo avión aparecerá y después de 15 segundos un tercer avión aparecerá, etc.
Para terminar la primera fase de nuestro juego, abre el room , selecciona el objeto
controller_enemy y da un click en cualquier lugar del room
22
Versión 2. “1945 Air Combat”.
Retoma el archivo AirCombat_1 y genera un nuevo archivo con el nombre AirCombat_2, para
hacer esto emplea la opción Save As…
Para crear esto, nosotros haremos un nuevo objeto llamado controller_life. El cual no necesitará
un sprite, nosotros controlaremos el dibujo usando el evento drawing.
Lo primero que haremos es crear un sprite grande que funcione como panel de información.
Busque el archivo bottom en la carpeta Resources dentro de la carpeta Scrolling Shooter, y
renómbralo como spr_bottom:
23
Mostrará el score, el daño (en el área negra) y el número de aviones (vidas) que le quedan. En el
evento draw del objeto controller_life nosotros dibujaremos este sprite, usar la acción Draw
Sprite en la posición correcta. Nosotros llenaremos los parámetros como sigue:
Esto colocará el sprite en la parte baja de la pantalla. Para asegurarnos que el panel inferior se
mantenga sobre cualquier cosa le damos al objeto controller_life una profundidad (Depth) de -
10000.
24
En el evento Draw de este objeto controller_life vamos a añadir el score, usaremos la acción Draw
Score, que se encuentra en la pestaña Score. Pero primero establecemos el color del dibujo en
Para dibujar las vidas usamos un mecanismo diferente, en lugar de que aparezca un número
nosotros dibujaremos un número de pequeñas imágenes de aviones. Para esto usamos un sprite
con una imagen de un avión pequeño, añadir un sprite con la imagen life que se encuentra en la
carpeta Resources, darle un nombre adecuado spr_life, posteriormente ir al objeto controller_life
y dentro del evento Draw añadir la acción Draw Life Imágenes, que se encuentra en la pestaña
Score del menú de la derecha, los parámetros de esta acción se muestran en una de las siguientes
figuras:
25
Para dibujar la salud (health) existe una acción especial, Draw Health dentro de la pestaña Score
del menú de la derecha . La salud es desplegada como una barra de salud. Tú puedes indicar la
posición, tamaño y color . Nosotros la llenaremos como los siguientes parámetros.
El total de acciones para el evento Draw del objeto controller_life debe lucir como:
Ahora necesitamos checar la salud (health) y las vidas. Necesitaremos realizar algunos cambios en
el objeto obj_enemy, en el evento collision del avión enemigo con el avión principal. Primero
ejecutamos el sonido de la explosión1 Play sound, después creamos una instancia del objeto
obj_explosion1 Create Instance a continuación movemos el avión enemigo a otra posición Jump
to position y por último decrementamos la salud en -30 Set the health (para que tenga 3
oportunidades), las acciones deben quedar como:
26
Ahora en el objeto controller_life debemos considerar cuando la salud (health) sea menor a 0, es
decir no hay salud No more health, este evento se encuentra dentro de Other event , Las
acciones que colocaremos aquí son, establecer la salud en 100 Set the health to 100, Ejecutar el
sonido de la explosión fuerte Play sound snd_explosion2 y cambiar la instancia del avión principal
por la explosión2 Change instance into obj_explosion2, las acciones de este evento deben quedar
como:
27
nueva instancia del avión principal en la posición actual, es decir se requiere marcar la caja de
relative, Create instance of object obj_myplane y reducir el número de vidas en 1 Set lives
relative to -1, las acciones para este evento deben quedar como:
Para darle más complejidad añadiremos un avión enemigo, para realizar esto debemos modificar
el objeto controller_enemy, en el evento Create añadir una acción Create Instance del avión
enemigo obj_enemy, en la localización x random(room_width) y y -16.
28
Ahora lo único que nos falta es añadir una instancia del objeto controller_life en el room y LISTO.
GRABA TU JUEGO y a JUGAR. La segunda versión del juego quedó terminada. AirCombat_2
29
Versión 3. “1945 Air Combat”
Retoma el archivo AirCombat_2 y genera un nuevo archivo con el nombre AirCombat_3, para
hacer esto emplea la opción Save As…
Más Enemigos
Vamos a añadir tres nuevos tipos de aviones enemigos a nuestro juego. El primero de ellos lanzará
balas en línea recta. El segundo avión lanzará balas hacia el avión principal y el tercer tipo no
lanzará balas pero aparecerá desde la parte inferior del room avanzando hacia arriba lo que
representa mayor dificultad para evitar una colisión.
Para crear el primer nuevo tipo de enemigo, primero creamos un sprite con una imagen similar a
la del avión enemigo que ya tenemos sólo que de un color diferente, usa el archivo enemy2_strip3
que se encuentra en la carpeta Resources dentro de la carpeta Scrolling Shooter, proporciónale el
nombre spr_enemy2 y no olvides especificar el centro de la figura que en este caso los valores son
16 para x y y.
Ahora crearemos el objeto asociado a este sprite, como este objeto será igual al que ya tenemos
obj_enemy1, nos conviene realizar una copia, para la cual daremos click derecho al objeto
obj_enemy1 y seleccionaremos Duplicate. lo llamaremos obj_enemy2 y seleccionaremos el sprite
spr_enemy2.
30
Como este es un avión más especial el jugador ganará más puntos si lo elimina. Por lo tanto
cambia en el evento de colisión con la bala para que el incremento en el score sea de 10.
Para que este nuevo avión enemigo ataque, necesitamos un sprite de bala y su objeto asociado;
para el sprite usar el archivo enemybullet2 de nuestra carpeta Resources que se encuentra dentro
de la carpeta Scrolling Shooter y proporciónale el nombre spr_bulletenemy1 y especifica el centro
de la imagen.
31
Ahora crea el objeto asociado a este sprite y llámalo obj_enemybullet1, Añade un evento Create y
dentro de él coloca la acción vertical speed y asigna un 8.
Después añade el evento Step y cuida que el objeto sea destruido Destroy the instance, cuando
alcance el límite inferior del room.
Y por último, añadimos el evento de colisión con el avión principal, dentro de este evento
realizaremos tres acciones. Primero ejecutaremos el sonido de la explosión Play sound
snd_explosion2, Destruir la bala, Destroy the instance y disminuir la salud en 5, Set the health
relative to -5.
32
Nosotros queremos que el avión enemigo dispare sus balas en intervalos de tiempo, Para hacer
esto añadiremos en el evento Step del avión enemigo una acción Test Chance que se encuentra en
la pestaña Control, el parámetro que colocaremos en esta acción es 30. Esto nos permitirá que la
siguiente acción sea desempeñada en promedio cada 30 steps. La siguiente acción será crear la
bala enemiga Create instance .
33
Finalmente nosotros nos queremos asegurar, de que nuestro segundo avión enemigo aparezca.
Para esto usamos el objeto controller_enemy. En el evento de creación nosotros estableceremos
una alarma 1 con el valor de 1000. En el evento de la alarma nosotros crearemos el segundo
avión enemigo y estableceremos la alarma 1 en 500, para crear otro avión enemigo unos
segundos después. Por lo tanto el primer avión enemigo de este tipo aparecerá después de 30
segundos y un avión extra aparecerá cada 15 segundos.
34
GRABA TU JUEGO. Ejecútalo; debes poder ver en acción al nuevo tipo de avión enemigo.
Para nuestro siguiente tipo de avión enemigo, necesitaremos un nuevo sprite, utiliza el archivo
enemy3_strip3 que se encuentra en la carpeta Resources dentro de la carpeta Scrolling Shooter,
especifica el centro de la imagen Origin y proporciónale como nombre spr_enemy3. Añade
también un sprite para la bala de este tipo de avión, utiliza el archivo enemybullet2 que se
encuentra en la carpeta Resources dentro de la carpeta Scrolling Shooter, especifica el centro de la
imagen Origin y proporciónale como nombre spr_enemybullet2.
Ya con los sprites definidos, vamos a crear los objetos, vamos a realizar un duplicado del objeto
obj_enemy2, lo renombramos como obj_enemy3 y le asociamos el sprite correcto spr_enemy3 ,
en el evento de colisión con obj_bullet, cambiamos el score para que el incremento sea de 20.
35
Ahora vamos a crear un nuevo objeto para la bala de este avión, el nombre para este objeto
deberá ser obj_enemybullet2, no olvides asociarle el sprite correcto spr_enemybullet2.
El avión enemigo crea una instancia de este nuevo disparo Create Instance en el evento Step,
nuevamente usamos la acción Test Chance, pero ahora nosotros creamos una bala cada 80 steps.
36
El nuevo tipo de bala trabajará como sigue. En el evento de Creación Create, usaremos una acción
Move towards a position. ¿Pero qué posición usar? Nosotros queremos que el disparo se diriga al
avión principal, por lo cual requerimos saber las coordenadas x y y del avión principal, esto es muy
fácil en Game Maker, para accesar al valor de una variable desde otra instancia lo que hacemos es
preceder el nombre de la variable con el nombre del objeto, Nosotros usaremos obj_myplane.x
para obtener el valor de la coordenada x del avión. Para que esto funcione bien requiere que
exista una instancia del objeto, por lo cual requerimos checar si existe una instancia antes de
intentar accesar los datos de las variables. Para hacer esto utilizaremos una acción que cuenta el
número de instancias de un particular objeto Test Instance Count que se encuentra en la pestaña
Control, si esta acción nos dice que sí hay instancias del avión disparamos hacia el avión y si no es
así la bala se dirigirá hacia abajo.
Ahora añadimos la acción else que se encuentra en la pestaña Control para añadir posteriormente
la acción Set the vertical speed de la pestaña Move.
37
Ahora añadimos el evento de colisión con el avión principal y dentro de este evento colocamos las
acciones de ejecución del sonido de la explosión Play sound, Destruir la instancia Destroy the
instance y decrementar la salud Set the health relative -5.
Y como esta bala se dirige siempre al avión lo que implica que se mueve en cualquier dirección
dificulta validar en el evento step si se sale del room. Pero, existe un evento especial el evento
Outside room que se encuentra dentro de la sección Other, en este evento colocaremos la acción
Destroy the instance.
38
Finalmente tenemos que manejar la creación de este nuevo tipo de avión enemigo. Para esto
usamos el objeto controller_enemy. En el evento creación establecemos una alarma alarm2 en
2000 y en el evento de esta alarma creamos el nuevo tipo de avión enemigo y volvemos a
establecer la alarma pero ahora en 1000, para crear otro avión enemigo segundos después.
39
GRABA TU JUEGO. Ejecútalo y verifica el funcionamiento del nuevo avión enemigo.
Para terminar vamos a añadir el último tipo de avión enemigo, este avión es idéntico a nuestro
primer avión enemigo obj_enemy1, sólo que nuestro nuevo avión debe aparecer por la parte
inferior del room. Primero añade el sprite para este avión, selecciona el archivo enemy4_strip3
que se encuentra en la carpeta Resources dentro de la carpeta Scrolling Shooter, proporciónale el
nombre spr_enemy4 y modifica el Origin para que sea el centro de la imagen.
40
En el evento Step, modifica la evaluación de la coordenada y y el salto de posición, los parámetros
deben quedar en la evaluación y is smaller -32 y en el salto las coordenadas
(random(room_width), room_height+16).
En el evento de colisión con el avión principal modificar las coordenadas de la acción de salto
Jump to position deben quedar como (random(room_width),room_height+16)
41
Y en el evento de colisión con la bala, modificar las coordenadas de la acción de salto Jump to
position deben quedar como (random(room_width),room_height+16) y como este avión al
aparecer por la parte inferior da un grado más alto de dificultad el score debe de incrementarse a
40.
No olvides la necesidad de crear este nuevo avión enemigo utilizando el objeto controller_enemy.
En el evento creación establecemos una alarma alarm3 en 3000 y en el evento de esta alarma
creamos el nuevo tipo de avión enemigo y volvemos a establecer la alarma pero ahora en 300,
para crear otro avión enemigo segundos después.
42
Para completar tu juego añade información general del juego, utiliza para esto la opción Game
Information que aparece en el menú que se encuentra del lado izquierdo de nuestra pantalla.
GRABA TU JUEGO y a JUGAR. La tercer versión del juego quedó terminada. AirCombat_3
43