Hola buenas tardes, dias o noches uwu,necesito como hacer que la bala del jugador se diriga a varios obj_enemigos, ya que en mi proyecto no es un solo enemigo u objeto, pero que si un enemigo esta mas cercas de la bala este se diriga para el enemigo mas cercano, y si en el caso de que detecte a un enemigo este no se enfoque en otro enemigo aunque este mas cercas de la bala (me refiero que si aparece un enemigo extra al room en un momento despues de que se disparo la bala, este no le haga caso y se siga al otro objeto primeramente detectado) muchas gracias al que me responda como hacer eso paso a paso y espero aver explicado bien :-[ :)
Puedes obtener la instancia mas cerca utilizando la funcion instance_nearest(x, y, obj) luego le asignas esa instancia a la bala que creas para que esta solo siga a ese enemigo:
Esto lo pondrías cuando crees la bala:
[gml]
//Primero obtenemos la posición del enemigo mas cercano
var enemigo = instance_nearest(x, y, objEnemigo);
//Ahora creamos la bala
var bala = instance_create(x, y, objBala);
//Le decimos a la bala a que enemigo debe seguir
bala.enemigoObjetivo = enemigo;
[/gml]
Ahora en el objeto de la bala, en el evento step, depende de como tengas el sistema de movimiento esto puede cambiar. Yo lo voy a mover utilizando un método facil
[gml]
//Necesitas una velocidad para la bala
var velocidad = 3;
//Obtenemos la dirección hacia el enemigo
direction = point_direction(x, y, enemigoObjetivo.x, enemigoObjetivo.y);
//Ahora movemos la bala en esa direccion con una velocidad
x += lengthdir_x(velocidad, direction);
y += lengthdir_y(velocidad, direction);
[/gml]
Esto debería funcionar, al menos de forma básica, ya a partir de esto puedes adaptarlo a tus necesidades.
Saludos
iba a crear un nuevo post sin ver esto, gracias lo arregle a mi modo, en mi caso queria que el enemigo persiguiera al jugador mas cercano y gracias a ti lo logre... :D :D Cita de: Jucarave en Diciembre 23, 2018, 06:41:29 AM
Puedes obtener la instancia mas cerca utilizando la funcion instance_nearest(x, y, obj) luego le asignas esa instancia a la bala que creas para que esta solo siga a ese enemigo:
Esto lo pondrías cuando crees la bala:
[gml]
//Primero obtenemos la posición del enemigo mas cercano
var enemigo = instance_nearest(x, y, objEnemigo);
//Ahora creamos la bala
var bala = instance_create(x, y, objBala);
//Le decimos a la bala a que enemigo debe seguir
bala.enemigoObjetivo = enemigo;
[/gml]
Ahora en el objeto de la bala, en el evento step, depende de como tengas el sistema de movimiento esto puede cambiar. Yo lo voy a mover utilizando un método facil
[gml]
//Necesitas una velocidad para la bala
var velocidad = 3;
//Obtenemos la dirección hacia el enemigo
direction = point_direction(x, y, enemigoObjetivo.x, enemigoObjetivo.y);
//Ahora movemos la bala en esa direccion con una velocidad
x += lengthdir_x(velocidad, direction);
y += lengthdir_y(velocidad, direction);
[/gml]
Esto debería funcionar, al menos de forma básica, ya a partir de esto puedes adaptarlo a tus necesidades.
Saludos