Hola, soy nuevo por aquí y con el game maker, estoy haciendo un juego de scroll horizontal con views y los enemigo colocados "manualmente" sobre la room (no se si me explico muy bien xD)
El caso es que quiero comprobar que no queden enemigos en la zona de pantalla visible para hacer aparecer a otro enemigo aleatorio, sin olvidar que van "bajando" los enemigos que he creado colocandolos a mano en la room, básicamente quiero que si eliminas los enemigos muy rápido aparezcan mas enemigos aleatorios antes de que aparezcan los predefinidos.
He probado creando un contador global que si se queda a 0 lanza el enemigo nuevo con la idea de ir sumando 1 en el create de los enemigos y restando 1 al colisionar con mi disparo, pero no me suman nada, solo me resta, supongo que sera porque los creo de golpe al iniciar la room.
¿Alguna idea?
Prueba con
If instance_number(nombre objeto)=0 y pones las acciones a realizar.
Se usa para saber cuantas instancias quedan en la room.
Ya lo probé, pero en la room están "precreados" todos los enemigos aunque no vea ninguno en la parte visible de pantalla por lo que sigue habiendo instancias.
Pues en vez de 0 por el numero de instancias restando las que tengas ya precreadas.
Es un poco rollo ir contando cuantos enemigos hay en cada room pero funciona, gracias.
Podrías colocar una variable que tenga un valor distinto en los enemigos ya colocados que en los enemigos que se crean. Así, tienes separados los distintos tipos, y puedes contarlos según esa variable.
Podrías hacerlo poniendo en el evento create "precreado=1;", y cuando creas los enemigos, les cambias esa variable al crearlos, algo así como:
[gml]
(instance_create(0,0,navecita)).precreado=0;
[/gml]
A la hora de contarlos, podrías crear un script que tenga en cuenta solo uno de los tipos de enemigos:
[gml]
//Llamémosle "scrContar" al script, puedes ponerle el nombre que quieras
var contar;
contar=0;
with (navecita)
{
if (precreado=argument0) { contar+=1; }
}
return contar;
[/gml]
Así, para contar los enemigos que son precreados, deberías usar:
[gml]
navecitas_precreadas = scrContar(1);
[/gml]
La variable navecitas_precreadas contendrá el número de enemigos que han sido colocados por tí manualmente. Para contar los aleatorios, bastaría con cambiar ese 1 por un 0.
Así, para crear enemigos aleatorios si ya no existen los precreados, podrías hacer algo como:
[gml]
if (scrContar(1)==0)
{
//Creas los enemigos aleatorios
(instance_create(0,0,navecita)).precreado=0;
//Este script tendrías que extenderlo, obviamente, para que no cree enemigos de manera infinita.
//Podrías colocarle un contador, pero eso ya lo dejo en tus manos.
}
[/gml]