Bienvenidos sean a este post, hoy agregaremos algunos detalles faltantes como son los sonidos de nuestro juego y el concepto de invencibilidad.
Vamos a comenzar con la importacion de los sonidos del proyecto anterior, para ello debemos ir al Asset Browser buscamos la carpeta llamada Sounds, hacemos click con el boton derecho y seleccionamos Add Existing, nos abrira nuevamente una ventana, iremos al proyecto anterior y seleccionaremos la carpeta Sounds donde tendremos tres carpetas con los distintos sonidos, debemos entrar en cada una y seleccionar el archivo con la extension .yy

Esto debemos hacerlo con los tres sonidos, por cada sonidos puede aparecer el siguiente mensaje

En este caso les recomiendo presionar Save, una vez hecho todo deberan tener los tres sonidos dentro de la carpeta y se los abre en el workspace, prueben con el boton de Play para ver si reproduce el sonido, si tiene sonido significa que estamos todo ok, nuestro siguiente paso sera vincular estos tres sonidos a sus respectivos eventos, para comenzar vamos a nuestro objeto obj_Enemigo, pasamos al evento Step y en el condicional donde generamos la instancia de la bala y dentro del with agregaremos la siguiente linea:
audio_play_sound(snd_Laser,0,false);
Esta sera la funcion encargada de reproducir nuestro sonido, el primero sera el indice o mejor dicho el nombre que le asignamos al sonido, luego sera la prioridad la cual dejamos en 0 porque no tenemos muchos sonidos y por ultimo es para hacer loop o no, por esta razon lo dejamos en false, nuestro with quedara de la siguiente manera:
with(bala)
{
hspeed = other.hspeed;
vspeed = other.vspeed;
speed = 10;
audio_play_sound(snd_Laser,0,false);
}
Lo mismo debemos hacer con el disparo del jugador, para ello vamos a obj_Cj y en el evento Step buscaremos el condicional de la barra espaciadora, tambien dentro del with agregaremos la misma linea que la anterior quedando de la siguiente forma:
with(bala)
{
direction = other.direction;
speed = 10;
audio_play_sound(snd_Laser,0,false);
}
Esto hace exactamente lo mismo que lo anterior pero cada vez que dispara el jugador, solo nos resta el sonido para cuando impactamos a los enemigos, para ello debemos ir al objeto obj_Bala y dentro del evento Step buscaremos el condicional encargado de eliminar la bala y el enemigo ante una colision y agregaremos esta linea:
audio_play_sound(snd_Danyo,0,false);
Este reproducira el sonido cuando impactemos a un enemigo, el condicional quedara de la siguiente manera:
if (enemigo != noone)
{
instance_destroy(enemigo);
instance_destroy();
audio_play_sound(snd_Danyo,0,false);
}
Solo nos resta el sonido vinculado a cuando nuestro heroe pierde una vida porque despues haremos una modificacion vinculado a esto, vamos al objeto obj_Salud y dentro del condicional donde reiniciamos la salud agregaremos la siguiente linea:
audio_play_sound(snd_Salto,0,false);
En este caso reproducimos el ultimo sonido que tenemos disponible, la primer parte del condicional quedara de la siguiente manera:
if (lives > 0)
{
health = 100;
audio_play_sound(snd_Salto,0,false);
}
Ya tenemos todos los sonidos relacionado a nuestro juego, con todo esto ya podemos probar nuestro juego mediante el siguiente video
Nuestra siguiente modificacion sera de dotar a nuestro heroe con una invencibilidad temporal cada vez que recibe un impacto ya sea por bala o contacto con un enemigo y para ello deberemos hacer unas pequeñas modificaciones, la primera la haremos en el objeto obj_Cj.
Vamos hacia este objeto y agregaremos un nuevo evento de Alarma, y le asignaremos la alarma 1, dentro de esta alarma le agregaremos la siguiente linea:
invencible = false;
Esta volvera el valor de invencible a false nuevamente, la siguiente modificacion sera en Step donde cambiaremos este condicional:
if (collision_rectangle(
x,
y,
x + 32,
y + 64,
obj_Enemigo, false, false) != noone && !invencible)
{
health -= 25;
x = xstart;
y = ystart;
}
A este condicional lo modificaremos de la siguiente manera:
if (collision_rectangle(
x,
y,
x + 32,
y + 64,
obj_Enemigo, false, false) != noone && !invencible)
{
health -= 25;
invencible = true;
alarm[1] = 30;
}
Como pueden ver le quitamos la accion de ir al comienzo por cada impacto y agregamos una linea donde setea a invencible como true y establece un valor de 30 para la alarma que creamos, esto hara que cada vez que toquemos un enemigo nos volveremos por un tiempo invencibles y luego volveremos a poder recibir daño, la siguiente modificacion la haremos en obj_BalaEnem.
En este objeto modificaremos el evento Step donde tenemos este condicional:
if (jugador != noone)
{
health -= 10;
jugador.x = jugador.xstart;
jugador.y = jugador.ystart;
instance_destroy();
}
Al cual lo modificaremos de la siguiente manera:
if ((jugador != noone) && !jugador.invencible)
{
health -= 10;
jugador.invencible = true;
jugador.alarm[1] = 30;
instance_destroy();
}
En esta modificacion primero trajimos a invencible de la instancia del jugador, si esta es false ahora recibira el impacto, restamos la misma cantidad de salud pero aca tambien seteamos a invencible como true, observen que aclaramos a quien debe setear, luego iniciamos a la alarma correspondiente, es decir que repetimos el proceso pero cuando nos impacta una bala, y cuando se termina la alarma volvemos a recibir daño, por ultimo solo nos resta el hecho de perder una vida y para ello debemos ir al objeto obj_Salud.
En este ultimo objeto vamos a tomar este condicional:
if (lives > 0)
{
health = 100;
audio_play_sound(snd_Salto,0,false);
}
Y lo modificaremos de la siguiente manera:
if (lives > 0)
{
health = 100;
obj_Cj.x = obj_Cj.xstart;
obj_Cj.y = obj_Cj.ystart;
audio_play_sound(snd_Salto,0,false);
}
Con esta modificacion haremos que el jugador cada vez que pierda una vida vuelva al inicio de la misma forma que lo haciamos antes pero observen que en este caso debemos indicarle sobre que objeto debe hacerlo y para ello le pasamos a obj_Cj, el resto seguira como hasta ahora, con todas estas modificaciones podemos probar el juego para ver como funciona hasta ahora mediante el siguiente video
Con esto no solo tenemos un juego al 95% del juego anterior sino que a su vez podemos contemplar mejores opciones y un juego un poco mas justo con respecto a nuestras muertes o perdida de salud pero en el proximo post lo completaremos.
En resumen, hoy hemos visto como importar sonidos de otros proyectos, hemos visto que funcion los reproduce, tambien hemos visto como se utilizan en nuestras condiciones tanto de impacto como de disparo, tambien hemos modificado la reaccion de nuestro jugador con respecto al contacto de los enemigos asi como de las balas, agregando un breve tiempo de invencibilidad y saltar unicamente al inicio cuando perdamos una vida, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.00
