Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: The_Aesir en Junio 19, 2012, 04:49:43 AM

Título: Hacer que varios enemigos te persigan a la vez??
Publicado por: The_Aesir en Junio 19, 2012, 04:49:43 AM
Hola, quiero hacer unos simples enemigos q cuando vean al personaje lo persigan como se ve en la imagen, pero he tenido algunos inconvenientes (Uso Step Toward Point para el seguimiento):

(http://img213.imageshack.us/img213/5009/screenshot116h.png)

(http://img836.imageshack.us/img836/7272/screenshot119v.png)

Los enemigos son los grises, como se ve, despues de un tiempo de evadirlos los enemigos se van "juntando" hasta q al final quedan los 3 sprites uno encima del otro, y no es la idea.

Me gustaria q los enemigos persiguieran al jugador sin sobreponerse, intenté dejarlos en "solid", pero el problema es q cuando colisionan se detienen y ninguno avanza. ¿Alguien tiene algun algoritmo eficiente para esta clase de enemigos (que son bastante comunes por cierto)? Agradecería q me pudieran ayudar  :)
Título: Re:Hacer que varios enemigos te persigan a la vez??
Publicado por: elviskelley en Junio 19, 2012, 12:21:11 PM
/*usa esto en vez de step... lo que usaste.
lo colocas en el documento que sale en la pestaña control y que se llama execute codigo.
y claro el event es el event step.-*/
if instance_exists(objPlayer) //cambia el objPlayer por como se llame tu personaje.
{
if image_angle= point_direction(x,y,objPlayer.x,objPlayer.y) and distance_to_object(objPlayer)<96 //si lo esta mirando, cambia 96 por el radio de alcance de la vision.
{
direction=image_angle; image_angle=point_direction(x,y,objPlayer.x,objPlayer.y); //ajusta la direccion y lo sigue con la vista, osea se coloca en direccion al objPlayer.
if !place_meeting(x+lengthdir_x(speed,direction),y+lengthdir_y(speed,direction),objAve) //si no choca con
//otra ave claro cambia ave por como se llave el enemigo que lleva este codigo.
{speed=5;} //cambia 5 por la velocidad del movimiento.
}}
//solo se movera si no choca con otra ave de esa manera deberia mantener la distancia
//ya que primero verifica si tiene espacio y luego se movera.

//para entender mas el codigo te sugiero busques en el manual que hace cada uno de los codigos que use aqui.
Título: Re:Hacer que varios enemigos te persigan a la vez??
Publicado por: The_Aesir en Junio 19, 2012, 09:11:48 PM
mmm... hice lo que dijiste pero sólo funciona si borro esta linea de tu codigo (con ella los enemigos no hacen nada):

image_angle= point_direction(x,y,jugador.x,jugador.y) //jugador es mi objPlayer

pero aún asi se siguen superponiendo los sprites y no se detienen cuando chocan
Título: Re:Hacer que varios enemigos te persigan a la vez??
Publicado por: elviskelley en Junio 20, 2012, 03:52:24 PM
//cambia esta linea
if !place_meeting(x+lengthdir_x(speed,direction),y+lengthdir_y(speed,direction),objAve)
//por esta linea
if !collision_circle(x+lengthdir_x(speed,direction),y+lengthdir_y(speed,direction),32,objAve,1,0)
Título: Re:Hacer que varios enemigos te persigan a la vez??
Publicado por: The_Aesir en Junio 23, 2012, 03:50:53 AM
sigue sin funcionar, no se mueven, solo sigen al jugador con la vista
Título: Re:Hacer que varios enemigos te persigan a la vez??
Publicado por: elviskelley en Junio 23, 2012, 12:40:40 PM
ajusta la ultima linea que te di cambiando el 32.
Título: Re:Hacer que varios enemigos te persigan a la vez??
Publicado por: SobacoEnLlamas en Junio 23, 2012, 01:42:38 PM
de una manera chapucera (típico de mi), yo pondría una simple colisión al enemigo contra otro enemigo, un simple bounce mismo, lo malo es que muchas veces se vuelven locos y se mueven raro xd, pruebalo, si te vale, pues ya es algo jaja