Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: vitail en Abril 24, 2015, 03:12:11 AM

Título: IA zombie top-down
Publicado por: vitail en Abril 24, 2015, 03:12:11 AM
estoy haciendo una IA de zombie y voy así

if(instance_exists(obj_player))
{

    if(distance_to_object(obj_player) < 256 && !collision_line(x,y,obj_player.x,obj_player.y,obj_solid,false,true)){
       
        friction = 0;   
        direction = point_direction(x,y,obj_player.x,obj_player.y);
        speed = 3;
   
    }

} else {
   
    friction = 1;

}


en colisiones hacia otro objeto zombie, jugador y pared puse esto

move_bounce_solid(true);
if speed > 2 {speed = speed / 2;}


el problema es que quiero hacer de que cuando ya este fuera del rango del objeto o haya una linea de colision pare ese bounce, por que he intentado de varias formas y no logro hacer que el zombie pare cuando ya no sea cierto
Título: Re:IA zombie top-down
Publicado por: Clamud en Abril 24, 2015, 03:16:06 PM
¿Qué quieres decir con "linea de colisión pare ese bounce"?
Título: Re:IA zombie top-down
Publicado por: vitail en Abril 24, 2015, 08:39:45 PM
Cita de: Clamud en Abril 24, 2015, 03:16:06 PM
¿Qué quieres decir con "linea de colisión pare ese bounce"?

osea de que cuando no sea cierto y el enemigo este colisionando con la pared hace el move bounce solid y quiero saber como hacer para pararlo
Título: Re:IA zombie top-down
Publicado por: damyrodriiguez en Mayo 08, 2015, 10:19:09 AM
Holaa Amigo !!!! Puedo darte la solucion..

Tu lo que quieres hacer es que el zombie cuando este muy lejos tuyo se quede quieto?

Mira tu pusiste esto:
if(instance_exists(obj_player))
{

    if(distance_to_object(obj_player) < 256 && !collision_line(x,y,obj_player.x,obj_player.y,obj_solid,false,true)){
       
        friction = 0;   
        direction = point_direction(x,y,obj_player.x,obj_player.y);
        speed = 3;
   
    }

} else {
   
    friction = 1;

}

Copia y pega este codigo nuevo que hise con el tuyo..

if(instance_exists(obj_player))
{

    if(distance_to_object(obj_player) <= 256 && !collision_line(x,y,obj_player.x,obj_player.y,obj_solid,false,true)){
       
        friction = 0;   
        direction = point_direction(x,y,obj_player.x,obj_player.y);
        speed = 3;
   
if distnce_to_object(obj_player) >= 128
{}

}

} else {
   
    friction = 1;

}

Pruebalo Haber que tal...

Por Pregunta sobre este tema o otras dudas que tengas, te hago saber que me llamo Luiber Extrenzas en Facebook, AGREGAME! yo aqui te dejo el Link, cuando quieras, a las ordenes (Y)

https://www.facebook.com/profile.php?id=100008220635391