alguien sabe????? :-\ :-\ :-\
asi en general es complicado... seguramente, ser? vista cenital, tendr?s que hacer algo como checar que entre el tanque y el personaje no haya walls
if !collision_line(x,y,obj_P.x,obj_P.y,obj_wall,1,1);
donde obj_P es el personaje
y estando localizado, se deber?a mover hacia t?, con un move_towards_point
pero claro, deber?a girar hacia ti, usando el point_direction para calcular en angulo entre en tanque y el personaje, para girar el tanque con image_angle, solo en PRO... pero por dos partes, ya uqe seguramente sea la torreta y la parte de abajo, dos objetos, la torreta giraria mas rapido y el tanque mas lento... una pregunta muy general xD
Bueno bueno, primero que todo tienes el sprite de la turret(parte donde esta el caon) y separado la base(donde esta el mecanismo y lsa ougas),
haz dos objetos, el primero puede llamarse obj_tank, que va a ser el tanque:
[center][u][b]Evento Create:[/b][/u][/center]
image_angle=random(360)
pasear=0;//crea la variable pasear
atacar=0;//crea la variable atacar
xmove=xstart;// el lugar a donde debe es hacia la posicion del comienzo
ymove=ystart;//el lugar a donde debe es hacia la posicion del comienzo
move=true; // se puede mover
image_single=1;//seteamos que el sprite del objeto
//sea la pirmer imagen de la animaci?n
r1=0;
r2=0;
[center][u][b]Evento Step:[/b][/u][/center]
//MANEJO DE SPRITE
image_angle=direction //la imagen rota conforme a la direcion del objeto
//AI
//ATACAR
if instance_number(obj_player)=0 //si no existe jugador
{
atacar=false //atacar es falso
}
if instance_number(obj_player)>0//si hay por lo menos un jugador
{
if (distance_to_object(jugador)<400 //si la distancia al jugador es menor a 250
and point_direction(x,y,jugador.x,jugador.y)>direction-45 // y la direction hacia el jugador esta entre los
and point_direction(x,y,jugador.x,jugador.y)<direction+45)// 90? del angulo de vision
or distance_to_object(obj_player)<400 // ? si esta muy cerca
then
{
atacar=true //tiene que ataca
pasear=false //debe dejar de estar paseando por el mapa
}
else //de lo contrario
{
if distance_to_object(obj_player)>500 //si la distancia hacia el jugador es mayor a 200
atacar=false //debe dejar de atacar
}
}
if atacar=true //si atacar es verdadero
{
move_towards_point(jugador.x+r1,jugador.y+r2,1);//debe moverse hacia el jugador.
}
//PASEAR
if atacar=false //si no esta atacando
{pasear=true}//puede pasearse por el mapa
if pasear=true //si pasearse es verdadero
{
if (xmove<x+1)and(xmove>x-1) and (ymove>y-1) and (ymove<y+1) and move=true //si esta hacia donde deber?a moverse y se puede mover
{
xmove=round(xstart+random(40)+random(23)) //a donde debe moverse es X un lugar aleatorio
ymove=round(ystart+random(40)+random(23)) //a donde debe moverse es Y un lugar aleatorio
move=false // se desactiva mover
speed=0
}
if round(random(60))=60 and move=false // si de la posibilidad se da de 1 en 60
{
move=true //puede moverse
}
}
if pasear=true and move=true //si pasear esta activada y se puede mover
{
move_towards_point(xmove,ymove,1.5);//debe moverse hacia la variables xmove e ymove.
}
Ahora para la turret, que se va a llamar obj_tankturret:
[center][u][b]Evento Step:[/b][/u][/center]
if collision_circle(x,y,400,jugador,false,true) //para cuando el jugador este cerca
{
target=instance_nearest(x,y,jugadpr) //este va a ser la definicion de el objetivo
image_angle=point_direction(x,y,target.x,target.y)//va a mirar hacia el jugador
x=obj_tank.x
y=obj_tank.y
}
Y listo!
eso es todo
gracias :-* karma up :P