Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Dbatten en Enero 17, 2019, 04:02:31 PM

Título: Disparo que valla en varias direcciones
Publicado por: Dbatten en Enero 17, 2019, 04:02:31 PM
Estoy desarrollando las habilidades de un jefe y queria saber como puedo hacer que dispare 3 balas en diferentes direcciones sin tener que crear 3 objetos distintos.
Título: Re:Disparo que valla en varias direcciones
Publicado por: Hezz en Enero 17, 2019, 11:12:32 PM
Si te referís a hacer eso sin crear OBJETOS nuevos, entonces tenés que hacer que el jefe, al disparar, le aplique direcciones distintas a las instancias de las balas. Por ejemplo:
[gml]//Desde el objeto jefe en el evento donde dispare
var bala = instance_create(x,y,obj_bala); //Crear una instancia de uan bala y almacenar su id única en una variable "bala"
bala.direction = point_direction(x,y,obj_personaje.x,obj_personaje.y); //Darle como direccion el ángulo entre el jefe y el personaje
bala = instance_create(x,y,obj_bala); //Crear la segunda bala
bala.direction = point_direction(x,y,obj_personaje.x,obj_personaje.y) - 20; //La misma dirección, pero 20º menos
bala = instance_create(x,y,obj_bala); //Crear la tercer bala
bala.direction = point_direction(x,y,obj_personaje.x,obj_personaje.y) + 20; //La misma dirección, pero 20º más[/gml]
[gml]//Luego, desde el evento STEP de la bala...
x += cos(degtorad(direction))*5;
y += -sin(degtorad(direction))*5; //El menos va porque el eje y de gm está invertido[/gml]

En cambio, si lo querés hacer sin crear INSTANCIAS nuevas, es más complicado, ya que tenés que detectar las cajas de colisión de cada bala, procesar su movimiento, etc. Lo mejor es haciéndolo con instancias. Te recomiendo añadir el evento OTHER > OUTSIDE ROOM y hacer que se destruya la bala cuando sale de la room, para evitar que se siga procesando desde donde ya no sirve que esté.