Anuncios

Bienvenidos sean a este post, en el post anterior generamos al objeto que seran nuestros enemigos pero hoy veremos un objeto para controlar todo.

Anuncios

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
Anuncios

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);
Anuncios

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;
	}
}
Anuncios
Anuncios

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;
Anuncios

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.

Anuncios
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.
Anuncios

Con esto ultimo aclarado podemos comprobarlo y ver como trabaja mediante el siguiente video

Anuncios

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;
	}
}
Anuncios

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

Anuncios

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.

Anuncios

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.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.00

Anuncio publicitario