ïcono cambiado :D
Buenas, gente buena. Mi pregunta creo que es bastante novata, pero como primerizo, prefiero "escuchar" la opinión y consejo de los experimentados
Verán, mi juego es plataformero, estilo Castlevania, con miras a tener muchos rooms. Entonces, dada la cantidad de enemigos y habitaciones que pretendo meter, tengo dudas sobre cuál será la mejor forma de hacer brotar enemigos de forma dinámica (obviamente, evitando colocar a los enemigos desde el editor de rooms)
Los enemigos que caminan deberán aparecer desde el inicio o el fin de la habitación, los que vuelan, pueden venir de arriba o los lados, incluso algunos saldrán de la tierra. Creo que debo estandarizar ciertas variables para todos los objetos enemigos, digamos en un array, y aleatorizarlas en el script que genere enemigos.
Lo más evidente que se me ocurre es que en un objeto controlador
if (room == room1)
{
// código para generar enemigos en la habitación 1
}
if (room == room2)
{
// código para generar enemigos en la habitación 2
}
y así sucesivamente
Como GM está orientado a trabajar por habitaciones, no alcanzo a ver otra manera (Me da miedo el engendro de script que saldría :-[) Si alguien con más experiencia y seso me puede recomendar algo mejor, o sugerirme algo, me ayudaría mucho.
Gracias.
Bueno, pero que versión de GM estas usando?
esta pregunta indica que NO estas usando el icono del tema correcto, cámbialo para que te puedan colaborar.
Cita de: Maitreya en Junio 21, 2013, 03:49:17 PM
Bueno, pero que versión de GM estas usando?
esta pregunta indica que NO estas usando el icono del tema correcto, cámbialo para que te puedan colaborar.
Que mas da la version si pregunta por un script de GML?
En fin, no hay UNA FORMA de spawnear enemigos de forma dinamica. Lo que te aconsejo es hacer un spawner para cada enemigo, es decir, un objeto invisible que spawnee enemigos.
Luego a este spawner le pones en el evento create/step dependiendo de si quieres crear todos los enemigos al principio o durante la room que enemy=instance_create(<x>,<y>,<tipo de enemigo>) y luego puedes modificar valores de los enemigos con enemy.<variable> = <valor>
Para que salgan de las esquinas de abajo seria en vez de x insertar choose(0,room_width) y en y la altura a la que quieres que salgan (es decir, room_height - <altura> para que no salgan debajo del suelo)
Si quieres que salgan de los lados a cualquier altura en vez de y pones irandomrange(<borde superior>,room_width()-<borde inferior>)
Cita de: DustProductions en Junio 22, 2013, 03:54:17 PM
Para que salgan de las esquinas de abajo seria en vez de x insertar choose(0,room_width) y en y la altura a la que quieres que salgan (es decir, room_height - <altura> para que no salgan debajo del suelo)
Si quieres que salgan de los lados a cualquier altura en vez de y pones irandomrange(<borde superior>,room_width()-<borde inferior>)
Gracias, DustProductions. Sé cómo hacer que salgan de cierto lugar, lo que me genera dudas es cuál será la manera más provechosa de gestionar la generación dinámica de una cantidad alta de enemigos. Por ejemplo, el dilema de manejar un solo objeto "spawneador" que funcione de acuerdo a los rooms o escenarios, o manejar uno por cada enemigo, como dices. Por eso no sabía qué ícono poner, ya que más que el código, me interesa conocer una idea/estrategia a grandes rasgos.
Aun no sé si usar un solo objeto o muchos. :-[
Creo que tambien voy a necesitar un contador global que se reinicie cada que se entre a una habitación, para controlar la generación en base al tiempo transcurrido.
Por lo general suelo estar a favor de minimizar el numero de objetos, pero en este caso creo que seria mejor tener varios, por el simple hecho que asi es mas manejable que con un solo spawner. Yo en tu lugar pondria un objeto spawner, luego los spawners de cada cosa que tengan el otro como parent. Asi te ahorras hacerlo todo mil veces. Luego tambien puedes usar variables globales o el codigo de creacion de la instancia para cambiar valores como la cantidad de enemigos y tal. Aqui no hay una forma buena de hacerlo, pero yo creo que la de varios spawners configurables seria la mas agradable de implementar y modificar.