Quizás a estas altura de la película es tonto preguntar esto. Pero estoy haciendo pruebas para colocar los enemigos de forma aleatoria cada vez que inicia el juego. Osea, en evento Create se crean los enemigos con un:
repeat (5)
{
instance_create(irandom(x),irandom(y),enemigo);
}
Y luego, en el evento Step, había pensado poner lo movimientos del enemigo que persigue al personaje.
Cual a sido mi sorpresa que se ha inundado el juego con tropecientos enemigos ¿El repeat(5), no debería haber creado solo 5?
Cómo esto me ha sorprendido, he realizado esta prueba con el evento Create:
instance_create(100,100,enemigo);
Pero al iniciar el juego da error. Lo que quiero es colocar el enemigo por código. Osea, no pegandolo en el editor de room.
Pone que se crea un bucle infinito y tal... :(
amigo lo que pasa es que pones el instance_create en el create del objeto enemigo o me equivoco??
si es asi cada vez q se cree un nuevo enemigo este también va a ejecutar el mismo codigo y asi susesivamente para cada objeto enemigo creado!!
puedes poner otro objeto no se obj_poner_enemigos y pones el repet y todo el resto
Cita de: ocarina en Febrero 28, 2014, 06:55:24 PM
amigo lo que pasa es que pones el instance_create en el create del objeto enemigo o me equivoco??
si es asi cada vez q se cree un nuevo enemigo este también va a ejecutar el mismo codigo y asi susesivamente para cada objeto enemigo creado!!
puedes poner otro objeto no se obj_poner_enemigos y pones el repet y todo el resto
Tenias razón. Ahora va bien. A veces no se si me equivoco con el código o el orden donde lo pongo con los eventos/objetos.
Ponía en el Create del mismo enemigo el instance_create de si mismo.
He creado un objeto general para poner los CREATE de cada enemigo. Y luego, en cada enemigo los eventos para controlar sus comportamientos.
Gracias...
Si quieres que aparezcan en cualquier lugar del cuarto sin saber sus dimensiones puedes usar room_width y room_height, tambien si tienes otros elementos en el cuarto como muros que tengan activado la propiedad Solid es posible que aparezcan encima asi que debes limitarlo con un if place_empty()
Lo que te recomendaría hacer es poner que se creen los enemigos en el creation code del room, osea que cuando se cree el room se crearan tu enemigos en forma aleatoria
Yo te recomiendo que siempre mantegas un objeto "control" para todo este tipo de cosas, sirve de mucho.
y por si quieres crear enemigos en partes especificas de la Room también puedes usar random_range(inicio, fin)
Saludos.
Cita de: gortz en Febrero 28, 2014, 11:05:01 PM
Si quieres que aparezcan en cualquier lugar del cuarto sin saber sus dimensiones puedes usar room_width y room_height, tambien si tienes otros elementos en el cuarto como muros que tengan activado la propiedad Solid es posible que aparezcan encima asi que debes limitarlo con un if place_empty()
La cosa está que no sé que tres funciones aplicar para esto:
Cuando el enemigo es creado aleatoriamente en el evento CREATE CONTROLADOR, el enemigo se mueve en la cuadricula gracias a la función place_snapped en su evento propio STEP. Cuando ubicaba yo los enemigos en el editor de la room no tenia este problema. Ya que estaban bien puestos de forma manual.
Pero claro, al usar random, cada uno aparece donde le sale de las narices. Y claro, un enemigo se bloquea en un muro. El otro da vueltas sobre si mismo por estar fuera de la cuadricula (no funciona en ese caso el place_snapped), etc...
Tengo este problema:
1. Que los objetos cuando aparezcan lo hagan en 'zonas libres' y alineados con el grid.
Entonces se deberá usar una mezcla de estas funciones ¿No?:
-place_snapped
-place_free
-place_empty