Bienvenidos sean a este post, en el post anterior generamos al objeto que seran nuestros enemigos pero hoy veremos un objeto para controlar todo.
En este caso vamos a trabajar sobre un objeto que tendra distintas tareas que controlar:
- Relacionadas con los enemigos
- Relacionadas con el jefe que veremos mas adelante
- Relacionadas con el estado del juego
Para este caso vamos a comenzar con el tema relacionado a los enemigos y como generar a los mismos al azar y para ello vamos a utilizar a este objeto nuevo, vamos al Asset Browser generamos un nuevo objeto y lo llamaremos obj_control, una vez generado el nuevo objeto procederemos a agregar un evento Create donde agregaremos el siguiente codigo:
alarma_num = 300;
randomize();
event_perform(ev_alarm,0);
La primer variable sera para indicar cada cuanto se ejecutara el evento Alarm que agregaremos a continuacion, en este caso usamos 300 que equivale a unos 10 segundos para un room que utiliza una velocidad de 30 pasos o steps, recuerden que un segundo equivalen a 30 pasos, la siguiente linea es para iniciar la capacidad de poder generar los valores al azar, y la ultima sera la encargada de llamar a un evento, en este caso uno que no existe como es una alarma y la primera alarma, en este caso es la 0, con esto terminamos con nuestro evento Create, pasemos a crear el evento que nos falta como es el Alarm y usaremos a Alarm 0, con esta nuevo evento creado le agregaremos el siguiente codigo:
if (instance_exists(obj_Nave))
{
switch(irandom(2))
{
case 0:
instance_create_depth(32,0,0,obj_Enemigo);
instance_create_depth(160,0,0,obj_Enemigo);
instance_create_depth(256,0,0,obj_Enemigo);
instance_create_depth(384,0,0,obj_Enemigo);
instance_create_depth(480,0,0,obj_Enemigo);
break;
case 1:
instance_create_depth(-32,128,0,obj_Enemigo);
instance_create_depth(-32,0,0,obj_Enemigo);
instance_create_depth(256,-32,0,obj_Enemigo);
instance_create_depth(544,0,0,obj_Enemigo);
instance_create_depth(544,128,0,obj_Enemigo);
break;
case 2:
instance_create_depth(-32,224,0,obj_Enemigo);
instance_create_depth(128,-32,0,obj_Enemigo);
instance_create_depth(256,-96,0,obj_Enemigo);
instance_create_depth(384,-32,0,obj_Enemigo);
instance_create_depth(544,224,0,obj_Enemigo);
break;
}
}
El condicional verificara si existe una instancia de la nave del jugador, en caso de ser verdadero tendremos un switch que chequeara el numero generado al azar por medio de irandom y el rango sera entre 0 y 2, dentro de este switch tendremos tres case para evaluar cada uno de los posibles numeros que pueda devolver irandom, todos los case son iguales porque van a crear cinco instancias de los objetos enemigos en distintas posiciones, observen como varian las posiciones de los ejes X e Y, esto al igual que sucedia con el juego de las plataformas, Salta Pepe!, vamos a crear un efecto de enemigos «al azar» creando instancias en distintas posiciones pero estaran predefinidas en realidad, con esto concluido agregaremos el siguiente codigo despues del condicional:
alarm[0] = alarma_num;
if (alarma_num > 120) alarma_num -= 5;
En este caso estableceremos que la alarma espere el valor que posee alarma_num, despues tenemos un condicional donde verifica si alarma_num es mayor a 120 y en caso de ser verdadero disminuiremos en 5 el valor de alarma_num, con esto solo nos resta probarlo para ello debemos agregarlo en el rincon superior a la izquierda, si agregaron un enemigo para probarlo de nuestro post anterior eliminen al mismo para verificar que funciona correctamente.
Nota: Si quieren ver como funciona deben agregar la siguiente linea al final del evento Step en el obj_Enemigo: y += 1; Esta linea incrementara el valor del eje Y de las instancias creadas pero deben hacerlo unicamente para probarlo, despues la eliminaremos y lo haremos de forma distinta.
Con esto ultimo aclarado podemos comprobarlo y ver como trabaja mediante el siguiente video
Si observan en el video podemos ver como no funciona de la manera que queremos porque en algunas ocasiones nos aparece un solo enemigo o dos y solamente cinco en fila, esto es debido a que nosotros creamos enemigos por fuera del room, y si recuerdan cuando creamos el evento Step del objeto clase_enemigo, todo objeto que este por fuera del room, en cualquiera de sus limites, sera eliminado o mejor dicho su instancia, si observan tenemos varios negativos, una solucion seria modificar el switch que genera las instancias de la siguiente manera:
if (instance_exists(obj_Nave))
{
switch(irandom(2))
{
case 0:
instance_create_depth(32,0,0,obj_Enemigo);
instance_create_depth(160,16,0,obj_Enemigo);
instance_create_depth(256,0,0,obj_Enemigo);
instance_create_depth(384,32,0,obj_Enemigo);
instance_create_depth(480,0,0,obj_Enemigo);
break;
case 1:
instance_create_depth(0,128,0,obj_Enemigo);
instance_create_depth(128,0,0,obj_Enemigo);
instance_create_depth(256,32,0,obj_Enemigo);
instance_create_depth(544,0,0,obj_Enemigo);
instance_create_depth(544,64,0,obj_Enemigo);
break;
case 2:
instance_create_depth(32,224,0,obj_Enemigo);
instance_create_depth(128,32,0,obj_Enemigo);
instance_create_depth(256,96,0,obj_Enemigo);
instance_create_depth(384,32,0,obj_Enemigo);
instance_create_depth(544,224,0,obj_Enemigo);
break;
}
}
Este es un ejemplo de como modificar la aparicion de nuestros enemigos, pueden probar con otros valores pero traten de que no sean negativos, veamos como funciona esta modificacion con el siguiente video
En el video podemos ver una mejor caida de nuestros enemigos en la pantalla, obviamente pueden jugar con los valores de x e y para que aparezcan o no algunos enemigos.
En resumen, hoy hemos creado un objeto que tendra multiples propositos, en el caso de hoy hemos agregado la capacidad de poder generar enemigos de forma «al azar», hemos visto como condiciones que agregamos anteriormente afectaron a nuestras modificaciones, y una forma de como solucionarlo, 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
