Hola a todos, hace un tiempo busque como hacer un spawn y basicamente tengo el codigo del spawn, tu puedes poner cada cuanto quieres que salga un enemigo (en mi caso), pero en mi proyecto acabo de incluir "Rondas" y me gustaría hacer una mezcla de spawns y rondas, por ejemplo..
Salen 10 enemigos en la primera ronda, los matas y en la siguiente ronda que seria la 2 salen 15, en la 3 unos 15 + 2 enemigos diferentes al anterior.. etc.
Supongo que sera posible pero he estado toqueteando los dos codigos y no lo consigo..

Si alguien sabe como hacer eso de que te salgan por ejemplo 10 enemigos (cada 5 segundos hasta llegar a los 10 enemigos y una vez sean 10 dejar de aparecer mas), luego en la ronda 2 otros 15 e igual.. incluso, intercalando enemigos diferentes.

Muchas gracias de antemano, un saludo!

Hola.

¿Podrías poner el código que tienes ahora y te lo intento adaptar a lo que buscas?

¡Saludos!
Visita mi proyecto: Space Cadet

Hola, pues mira, en mi personaje principal, en create tengo esto: (que tenga que ver con los spawns y las rondas)
global.level = 1;
global.enemigos_matados=0;
global.enemigos_restantes=6;


Luego tengo un Draw que muestra por que ronda vas (cada 6 muertes, +1 ronda)

Luego en el objeto spawn:
CREATE
spawn_rate = 10;
time_dif = 120;
alarm[0] = spawn_rate + random(time_dif);


ALARM 0
instance_create(x,y,obj_enemigo1);
alarm[0] = spawn_rate + random(time_dif);


Y al enemigo, al colisionar con la bala y destruirse el objeto:
global.enemigos_matados += 1;

Sinceramente no se bien bien a que se refieren estos codigos del spawn ya que los saque de un vídeo ingles y no me entere mucho, pero "funciona".

Hace que aparezca un enemigo (sin limite, salen infinitos) y lo de las rondas es una simple variable que cuando matas 6 suma 1 ronda.
Asi que por ahora las rondas no tienen significado, todo el rato salen los mismos enemigos (infinitos) y cada 6 que mato me suma 1 ronda, que en verdad hace lo mismo que la anterior y por eso mismo busco un cambio.

Como por ejemplo que aparezca 1 enemigo mas, o otro tipo de enemigo.

Muchas gracias por responderme, un saludo!

#3 Noviembre 12, 2014, 12:38:46 AM Ultima modificación: Noviembre 12, 2014, 12:41:39 AM por fab62
Por lo que supe gracias a unos amigos, el spawn es crear un objeto, bueno, lo que tu quieres es crear una cantidad, y luego de haberlos matado a todos crear otra cantidad superior a la anterior... por lo que vi, dedicas a un objeto a realizar el spawn (objeto spawn) a ver que se me ocurre...

TODO ESTO TE RECOMIENDO QUE LO AGREGUES A TU OBJETO SPAWN

hagamos que tienes un arreglo con todos los enemigos posibles (N) que se pueden crear [Evento Create]:

enemigo[0] = obj_enemigo0;
enemigo[1] = obj_enemigo1;
...
enemigo[N] = obj_enemigoN;


Ahora, tienes 2 variables globales, que encuentro que estan bien, solo cambié una a local [Evento Create]:

global.enemigos_matados  = 0;
global.level = 0;
enemigos_restantes = 0;
enemigos_limite = 6;
ronda_aumento = 2;

La variable "ronda_aumento" define cuantos enemigos más se van a crear en la proxima ronda, y la variable "enemigos_limite" será el delimitador, para lo que refiere el spawnear una cantidad de enemigos cuando todos los hayas matado.

Ahora que ya tenemos estas variables podemos spawnear como tu quieres:

Debemos crear la cantidad de enemigos por cada ronda, cuando global.enemigos_matados es mayor o igual a enemigos_restantes, quiere decir que ya has matado a todos los enemigos de la ronda, por lo que al comienzo sólo se crean

if (global.enemigos_matados >= enemigos_restantes)
{
   repeat(enemigos_limite)
   {
       randomize();
       instance_create(x,y,enemigo[irandom(enemigos_limite-1)]);
   }
   enemigos_restantes = enemigos_limite;
   enemigos_limite += ronda_aumento;
   
   global.enemigos_matados = 0;
   global.level++;
}


Ahora que ya se crearon, el objeto spawner debe esperar a que se maten a todos los enemigos creados, por lo que mantienes el evento en los enemigos cuando se destruyen (ESTO NO ESTA EN EL OBJETO SPAWN):
global.enemigos_matados += 1;

Si tienes dudas, me dices :)
El ayer es un recuerdo, el mañana un pensamiento, es el ahora en donde existo y vivo para ser feliz :D

Me he quedado sorprendido con tu respuesta, muchisimas gracias!
Lo siento si he tardado en respondes pero ando ocupadisimo ultimamente..

Sobre tus codigos me da error en esta linea:
instance_create(x,y,enemigo[irandom(enemigos_limite-1)]);

te paso mi codigo del obj_spawn y me dices que puede fallar que aun estoy aprendiendo y eso.. y sinceramente no me aclaro mucho con esto aun.. jajajaja

CREATE
spawn_rate = 10;
time_dif = 120;
alarm[0] = spawn_rate + random(time_dif);

global.enemigos_matados  = 0;
global.level = 0;
enemigos_restantes = 0;
enemigos_limite = 6;
ronda_aumento = 2;

enemigo[1] = obj_enemigo1;

if (global.enemigos_matados >= enemigos_restantes)
{
   repeat(enemigos_limite)
   {
       randomize();
       instance_create(x,y,enemigo1[irandom(enemigos_limite-1)]);
   }
   enemigos_restantes = enemigos_limite;
   enemigos_limite += ronda_aumento;
   
   global.enemigos_matados = 0;
   global.level++;
}


ALARM 0
instance_create(x,y,obj_enemigo1);
alarm[0] = spawn_rate + random(time_dif);


He estado toqueteando la linea que falla pero que vaa, no consigo la solución.

Muchas gracias por responderme, un saludo!

:O!! tienes un solo enemigo, entonces solo debes colocar esto :)

instance_create(x,y,obj_enemigo1);


ya que el arreglo era para cuando tienes muchos enemigos diferentes
otra cosa que se me olvido es que debes limitar "enemigos_limite" xD:


if (global.enemigos_matados >= enemigos_restantes)
{
   repeat(enemigos_limite)
   {
       randomize();
       instance_create(x,y,enemigo[irandom(enemigos_limite-1)]);
   }
   enemigos_restantes = enemigos_limite;
   enemigos_limite += ronda_aumento;

   if (enemigos_limite > enemigos_total-1) enemigos_limite = enemigos_total-1;
   
   global.enemigos_matados = 0;
   global.level++;
}


Enemigos total seria la cantidad de enemigos diferentes que quieres crear, pero como tienes 1 como que no sirve mucho que digamos el codigo xD ...

Saludos!
El ayer es un recuerdo, el mañana un pensamiento, es el ahora en donde existo y vivo para ser feliz :D