Hola de nuevo makeros!!
En mi juego, estoy creando una IA para que funcione como un bot, es decir, no como enemigo.
Los enemigos son los "mineros". El bot tiene que recoger oro, y cuando estén los mineros cerca de él, pues que intente escabullirse de ellos. Para ello he creado el siguiente código, con la intención de que se esconda detrás de muros si existen y si no, pues que vaya donde está el player, pero evitando en el camino a los mineros (suele haber en la room más de uno):
Step event
Con este código, hay veces que el bot hace lo que debería, pero hay veces que se atasca cerca de los muros y no hace nada.
¿Qué estoy haciendo mal?
Grax!!!
En mi juego, estoy creando una IA para que funcione como un bot, es decir, no como enemigo.
Los enemigos son los "mineros". El bot tiene que recoger oro, y cuando estén los mineros cerca de él, pues que intente escabullirse de ellos. Para ello he creado el siguiente código, con la intención de que se esconda detrás de muros si existen y si no, pues que vaya donde está el player, pero evitando en el camino a los mineros (suele haber en la room más de uno):
Step event
Código [Seleccionar]
if distance_to_object(obj_minero_AI)<=128{target=obj_minero_AI}
else
if distance_to_object(obj_minero_AD)<=128{target=obj_minero_AD}
else
if distance_to_object(obj_minero_ArD)<=128{target=obj_minero_ArD}
else
if distance_to_object(obj_minero)<=128{target=obj_minero}
else
if distance_to_object(obj_minero_creado)<=128{target=obj_minero_creado}
else
target=-1
if target=-1{scr_buscar_tesoro()}//Es el script para buscar oro
else
{
if instance_exists(obj_muro)
{
var1 = instance_nearest(x,y,obj_muro)
var2 = point_direction(target.x,target.y,var1.x+32,var1.y+32)
mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),8,obj_muro)//Para esconderse detras de muros
mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,target)//Si ademas le esta siguiendo el minero, para huir de el
}
else
{
var1 = instance_nearest(x,y,obj_player)//Ir a donde está el player
var2 = point_direction(target.x,target.y,var1.x+16,var1.y+16)
if room=room_level2
{
mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,obj_morir)//Evitar el objeto morir (acantilado)
mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,target)//Evitar ademas lo mineros
}
if room=room_level5
{
mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,obj_morir_lvl5)//Evitar el objeto morir (acantilado_1)
mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,target)//Evitar ademas lo minero
}
else{mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,target)}//Evitar a los mineros
}
}
Con este código, hay veces que el bot hace lo que debería, pero hay veces que se atasca cerca de los muros y no hace nada.
¿Qué estoy haciendo mal?
Grax!!!