Tengo un juego RPG donde el enemigo quisiera que bagara por el room moviendose de un lado a otro, pero cuando tenga al personaje a la izquierda o derecha o arriba o abajo, dejara de caminar y lo mirara, tomando en cuenta que este dentro de una distancia especificada, ya hice que bagara, pero no consigo que pare y me mire cuando este dentro de 60 pixeles de distancia, me podrían ayudar? Me urge :(
.:RoskGames:.

Son las 2:00 de la mañana, ando con algo de sueño  :-X asi que solo te paso un link de un articulo sobre IA, te recomiendo que lo estudies y adaptes a tu juego, tiene varias cosas interesantes que se pueden aprovechar

http://www.taringa.net/posts/hazlo-tu-mismo/13608990/Game-maker-IA-basica-parte-1.html


Cuak? O.O Na mentira xD amigo no me sirve esa :l
.:RoskGames:.

 :D :-[ bueno te dejo un ejemplo

Ya se hacer para que ande por el mundo :D ahora como hago para que me mire cuando este cerca de el?
.:RoskGames:.

Revisaste el ejemplo ??? Si no es eso necesito que expliques mejor lo que queres

no se esactamnto como ponerlo en el code pues tambien soi bastante nuevo... kieres k la ia mire hacia ati como si hablarais... creo k tendrias k ponerle un code que al llegar a una distancia menos de 60< el ia mirara acia la direcion k estas tu... creo que es un poco dificil pues tendrias que acer que mirara a 4 direcciones como cuando tu pj anda y se para mirando segun para k lado con un sprite diferente...
El limite lo pone nuestra imaginacion

Acabo de descargar el ejemplo, hoy lo pruebo a ver y te aviso :D
.:RoskGames:.


Menos mal que existe el traductor xD
.:RoskGames:.

#10 Mayo 23, 2014, 10:31:14 PM Ultima modificación: Mayo 23, 2014, 10:58:47 PM por computerguyhunter
Voy a tratar de ayudar por lo que voy entendiendo tu idea



//CREATE EVENT
e_walk=true;//variable que acepta que el enemigo camine por donde quiera.
e_moving=0;//variable que elige la dirección donde irá el personaje
alarm[0]=room_speed*2; //cada cuanto tiempo e_moving cambiará su valor para que camine en cierta dirección

//ALARM  0 EVENT
e_moving=choose(0,1,2,3,4);
alarm[0]=room_speed*2;

//STEP EVENT
if (distance_to_object(personaje)<60) then e_walk=false;
else e_walk=true;

  //enemigo vagando... los sprites los colocas a tu gusto
   if (e_walk==true)
   {
     switch(e_moving)
      {
       case 1: x+=4;break;// DERECHA
       case 2: x-=4;break;// IZQUIERDA
       case 3: y+=4;break;// ABAJO
       case 4: y-=4;break;// ARRIBA
       }
   }


no especificaste si la dirección de la mirada del enemigo al personaje puede también aceptar de forma diagonal
considerare que quieres que te mire horizontal o verticalmente:

//CREATE EVENT
y2=20;//altura del enemigo
x2=20;//ancho del enemigo
//STEP EVENT
if (e_walk==false)//el enemigo va a mirar
{
  if(personaje.y>y+y2) then sprite_index=e_sprt_up;//Arriba
  else if(personaje.y<y) then  sprite_index=e_sprt_down;//Abajo
  else if (personaje.x>x+x2) then sprite_index=e_sprt_right;//Derecha
  else if(personaje.x<x) then sprite_index=e_sprt_left;//Izquierda
}

Gracias! Probaré todo lo que has aportado y te aviso como me andubo  ;D Saludos :)
.:RoskGames:.

#12 Mayo 24, 2014, 12:02:54 AM Ultima modificación: Mayo 24, 2014, 12:33:56 AM por computerguyhunter
Otra idea es que si quieres que tu enemigo te miré también diagonalmente añade esto:


// STEP EVENT
if e_walk=false then image_angle=point_direction(x,y,personaje.x,personaje.y);



subiré un ejemplo de esto en unos minutos...

EL archivo que he subido contiene todo lo que expliqué, puedes revisar el código fuente, usé  :GM8:
Cualquier pregunta déjame un mensaje y trataré de solucionarlo :)