Hola a todos necesito ayuda, en mi juego de vista superior tengo implementados los campos de vision del ejemplo de este foro, pero hay 2 cosas q no me salen:
1 - Como altero el tamaño del campo de vision?
2 - Como hago para q el enemigo no vea a mi personaje si esta detras de un objeto?
Aqui dejo el codigo que estoy utilizando:
//MANEJO DE SPRITE
image_angle=direction //la imagen rota conforme a la direcion del objeto
//AI
//ATACAR
if congelar = 0
{
if instance_number(Robot)=0 //si no existe jugador
{
atacar=false //atacar es falso
}
if instance_number(Robot)>0//si hay por lo menos un jugador
{
if (distance_to_object(Robot)<250 //si la distancia al jugador es menor a 250
and point_direction(x,y,Robot.x,Robot.y)>direction-45 // y la direction hacia el jugador esta entre los
and point_direction(x,y,Robot.x,Robot.y)<direction+45)// 90° del angulo de vision
or distance_to_object(Robot)<6 // ó si esta muy cerca
then
{
atacar=true //tiene que ataca
}
else //de lo contrario
{
if distance_to_object(Robot)>180 //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(Robot.x,Robot.y,3);//debe moverse hacia el jugador.
}
}
La primera es facil: el campo de vision se supone que es lo que se ve de la room, entonces esta dado por el view_wview y por view_hview (http://www.comunidadgm.org/manual_GM/Vistas_GML.htm)
La segunda es mas dificil. Lo que se me ocurre es que:
Primero te fijes si el enemigo esta tapado por algo, eso se podria hacer creando una linea imaginaria entre el jugador y el enemigo y ver si esa linea se superpone con una pared (http://www.comunidadgm.org/manual_GM/Deteccion_de_colisiones.htm)
Luego se deberia hacer el objeto visible o no dependieno esa condicion con visible=true o visible=false