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!
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!
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 :)
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!