Hola, buenas de nuevo. Primero perdon por el titulo, me explico como un libro abierto xD. A ver si me podeis ayudar. Tengo un obj_enemigo que va volando por el aire y cuando estoy a una distnacia de menos de 500 de el me empieza a disparar. La mecanica consiste en esconderme detras de un objeto bloque para que si estoy detras de el no me dispare porque no me ve.
Ahora bien, el objeto enemigo al verme no me disparo, solo lo hace cuando salto, momento en el cual comienzx aa disparrme, pero si me quedo en el suelo o me meuvo hacia los lados no me dispara y no se muy bien como arregarlo. Saludos y gracias
El codigo es este. Si quito en //Disparar "es_visible" si que me detecta en el suelo y me dispara, pero obviamente hace caso omiso del obj_blqoue, por lo que entiendo que el fallo estara ahi
Esto es lo que tengo en el step del obj_enemigo. Con el es_visible detecta si me ve o no con el obj_bloque
Citar
es_visible = !collision_line(x,y,obj_player.x,obj_player.y,obj_block,false,false);
if(instance_exists(obj_player))
{
if(point_distance(x,y,obj_player.x,obj_player.y) <radio_persecucion)
{
shot = true;
}
else
{
shot = false;
}
}
//Disparar
if (shot == true )
{
if(load == 0)
{
instance_create(x,y,obj_bala01);
load = 30;
}
else
{
load -= 1;
}
}
Cambia esta parte:
[gml]
if(point_distance(x,y,obj_player.x,obj_player.y) <radio_persecucion and es_visible)
[/gml]
Cita de: 3dgeminis en Octubre 31, 2017, 07:07:19 PM
Cambia esta parte:
[gml]
if(point_distance(x,y,obj_player.x,obj_player.y) <radio_persecucion and es_visible)
[/gml]
Gracias pero de esa forma sigue sin funcionar... ??? :'(
Que raro, hice una prueba y si me funciono. Podrias replantearte el codigo de otra manera.
Proba de esta forma:
[gml]
if (point_distance(x,y,obj_player.x,obj_player.y)<radio_persecucion and !collision_line(x,y,obj_player.x,obj_player.y,obj_block,false,false)) {shoot=true}
else {shoot=false}
if shoot==true
{
load-=1
if load==0
{
instance_create(x,y,obj_bala01)
load=30;
}
}
else {load=30}
[/gml]